我无法获得我的SQLite列的总和。该应用程序不断崩溃。任何帮助将不胜感激,谢谢=)。这是我在DatabaseHelper和Main Activity中的代码:
public class DatabaseOperator {
private DataManager dataManager;
...
public int getTotalExpenses()
{
SQLiteDatabase database = dataManager.getReadableDatabase();
Cursor cursor = database.rawQuery("SELECT SUM(" + Integer.valueOf(Expenses.C_TOTAL_PRICE) + ") FROM " + Expenses.TABLE, null);
cursor.moveToFirst();
int i = cursor.getInt(0);
cursor.close();
return i;
}
//MainActivity.class
TextView textTotalExpenses;
int totalExpenses;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DatabaseOperator databaseOperator = new DatabaseOperator(this);
textTotalExpenses = (TextView) findViewById(R.id.textTotalExpenses);
totalExpenses = databaseOperator.getTotalExpenses();
textTotalExpenses.setText(totalExpenses);
03-26 09:31:23.483 5818-5818 / com.example.everydaybudgeting20 E / AndroidRuntime:FATAL EXCEPTION:main 处理:com.example.everydaybudgeting20,PID:5818 java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.everydaybudgeting20 / com.example.everydaybudgeting20.MainActivity}:java.lang.NumberFormatException:对于输入字符串:“totalPrice” 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 在android.app.ActivityThread.-wrap12(ActivityThread.java) 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1477) 在android.os.Handler.dispatchMessage(Handler.java:102) 在android.os.Looper.loop(Looper.java:154) 在android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 引起:java.lang.NumberFormatException:对于输入字符串:“totalPrice” 在java.lang.Integer.parseInt(Integer.java:521) 在java.lang.Integer.valueOf(Integer.java:611) at com.example.everydaybudgeting20.DatabaseOperator.getTotalExpenses(DatabaseOperator.java:229) 在com.example.everydaybudgeting20.MainActivity.onCreate(MainActivity.java:76) 在android.app.Activity.performCreate(Activity.java:6679) 在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 在android.app.ActivityThread.-wrap12(ActivityThread.java) 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1477) 在android.os.Handler.dispatchMessage(Handler.java:102) 在android.os.Looper.loop(Looper.java:154) 在android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
答案 0 :(得分:2)
我自己修好了。谢谢你的帮助!
public int getTotalExpenses()
{
int total = 0;
SQLiteDatabase database = dataManager.getReadableDatabase();
Cursor cursor = database.rawQuery("SELECT SUM("+ Expenses.C_TOTAL_PRICE + ") FROM " + Expenses.TABLE, null);
if (cursor.moveToFirst())
{
total = cursor.getInt(0);
}
while (cursor.moveToNext());
return total;
}