Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在sqlite中使用sum函数时出错_Android - Fatal编程技术网

Android 在sqlite中使用sum函数时出错

Android 在sqlite中使用sum函数时出错,android,Android,我的应用程序想要计算一个月的总销售额。我使用sql语句求和。但当我运行应用程序时,它失败了。我不知道为什么会出现这种错误。希望人们能帮我解决这个问题。我非常感激。 代码数据库适配器 public class DB_Adapter { public static final String DATE="date"; public static final String COST = "cost"; public static final String SALES = "sales"; public

我的应用程序想要计算一个月的总销售额。我使用sql语句求和。但当我运行应用程序时,它失败了。我不知道为什么会出现这种错误。希望人们能帮我解决这个问题。我非常感激。 代码数据库适配器

public class DB_Adapter {
public static final String DATE="date";
public static final String COST = "cost";
public static final String SALES = "sales";
public static final String NUMBER = "number";
public static final String PROFIT = "profit";
public static final String DB_NAME = "SAIGONFLEAMARKET";
public static final String DB_TABLE = "shipment";
public static final String MONTH="month";
public static final String YEAR="year";
public static final int DB_VERSION = 2;
private final Context mContext;
private SQLiteDatabase mDB;
private DBHelper mDBHelper;

public DB_Adapter(Context c) {
    mContext = c;
}

private static class DBHelper extends SQLiteOpenHelper
{

    public DBHelper(Context context, String name, CursorFactory factory,
            int version) {
        super(context, name, factory, version);
        // TODO Auto-generated constructor stub
    }

    // Khởi tạo một bảng trong database mang tên Saigonfleamarket
    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        try
        {
            db.execSQL("CREATE TABLE shipment (number integer PRIMARY KEY autoincrement, date text, cost float, sales float, profit float, month text, year text );");
        } catch (SQLException ex)
        {
            ex.printStackTrace();
        }
    }

    // Tạo một database mới
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        Log.i("DBAdapter", "Updating database...");
        db.execSQL("DROP TABLE IF EXISTS shipment");
        onCreate(db);
    }
}

// Mở một kết nối đến database
public DB_Adapter openDB()
{
    mDBHelper = new DBHelper(mContext, DB_NAME, null, DB_VERSION);
    mDB = mDBHelper.getWritableDatabase();
    return this;
}

// sau khi hoàn thành, đóng database lại
public void closeDB()
{
    mDBHelper.close();
}

public Cursor Sum(String _month, String _year)

{
    String sql="select Sum (profit) from shipment where month ='"+_month+"' AND year='"+ _year+"'";
    Cursor mCursor = mDB.rawQuery(sql, null);
    int test = mCursor.getCount();
    if (test != 0)
    {
        mCursor.moveToFirst();
    }

    return mCursor;
}  
}
日志cat错误

01-15 13:49:48.840: E/AndroidRuntime(6953): FATAL EXCEPTION: main
01-15 13:49:48.840: E/AndroidRuntime(6953): java.lang.NullPointerException
01-15 13:49:48.840: E/AndroidRuntime(6953):     at Data.DB_Adapter.Sum(DB_Adapter.java:116)
01-15 13:49:48.840: E/AndroidRuntime(6953):     at com.example.xitinshop.Thongtin.onClick(Thongtin.java:40)
01-15 13:49:48.840: E/AndroidRuntime(6953):     at android.view.View.performClick(View.java:2485)
01-15 13:49:48.840: E/AndroidRuntime(6953):     at android.view.View$PerformClick.run(View.java:9080)
01-15 13:49:48.840: E/AndroidRuntime(6953):     at android.os.Handler.handleCallback(Handler.java:587)
01-15 13:49:48.840: E/AndroidRuntime(6953):     at android.os.Handler.dispatchMessage(Handler.java:92)
01-15 13:49:48.840: E/AndroidRuntime(6953):     at android.os.Looper.loop(Looper.java:130)
01-15 13:49:48.840: E/AndroidRuntime(6953):     at android.app.ActivityThread.main(ActivityThread.java:3683)
01-15 13:49:48.840: E/AndroidRuntime(6953):     at java.lang.reflect.Method.invokeNative(Native Method)
01-15 13:49:48.840: E/AndroidRuntime(6953):     at java.lang.reflect.Method.invoke(Method.java:507)
01-15 13:49:48.840: E/AndroidRuntime(6953):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-15 13:49:48.840: E/AndroidRuntime(6953):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-15 13:49:48.840: E/AndroidRuntime(6953):     at dalvik.system.NativeStart.main(Native Method)

使用此方法而不是旧方法

public Cursor Sum(String _month, String _year)

{
    String sql="select Sum(profit) from shipment where month =? AND year=?";
    Cursor mCursor = mDB.rawQuery(sql, new String[] { _month ,_year});
    int test = mCursor.getCount();
    if (test != 0)
    {
        mCursor.moveToFirst();
    }

    return mCursor;
}  

哪一行是116?这就是它因NullPointerException而失败的地方。您是否初始化了mDB?String sql=“选择月=”“+”月+”,年=“+”年+”;游标mCursor=mDB.rawQuery(sql,null);我不知道为什么会有错误!
mDB
是否有值?设置一个断点并进行检查。我更改month='1'和year='2013'。但运行错误时仍然存在。当我在Firefox上运行SqlItemManager时,尝试成功。我确实喜欢你,但在光标位置mCursor=mDB.rawQuery(sql,新字符串[]{u month,{u year})仍然失败@Takeshi Pham拥有完美的打开和关闭数据库谢谢,我已经修复了它。因为我在运行时没有打开数据库。