Android SQLite数据库查询未返回结果
我为我的应用程序设置了一个SQLite DB,我有很多DB事务可以工作,但由于某种原因,其中一个查询没有返回任何结果。如有任何建议,我们将不胜感激。查询如下所示:Android SQLite数据库查询未返回结果,android,sql,database,sqlite,android-sqlite,Android,Sql,Database,Sqlite,Android Sqlite,我为我的应用程序设置了一个SQLite DB,我有很多DB事务可以工作,但由于某种原因,其中一个查询没有返回任何结果。如有任何建议,我们将不胜感激。查询如下所示: Log.d("DEBUG EXPREPORTS", "SELECTING report id 1"); expList = expData.queryHelper2("SELECT * FROM " +MySQLiteHelper.TABLE_EXPENSES +" WHERE rep
Log.d("DEBUG EXPREPORTS", "SELECTING report id 1");
expList = expData.queryHelper2("SELECT * FROM "
+MySQLiteHelper.TABLE_EXPENSES +" WHERE reportid = "
+ "'"+ 1 +"'", null);
查询帮助程序2:
public List<ExpensesFields> queryHelper2(String query, String[] selectionArgs){
List<ExpensesFields> queryResults = new ArrayList<ExpensesFields>();
Cursor cursor = database.rawQuery(query, selectionArgs);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
ExpensesFields expense = cursorToexpense(cursor);
queryResults.add(expense);
cursor.moveToNext();
}
// Make sure to close the cursor
cursor.close();
return queryResults;
}
返回所有行。我使用以下代码将项目添加到表中:
expData = new ExpensesDataSource(getActivity());
expData.open();
expData.createExpenses("", "", "", "", "", "", "", "",
"", "", "", "", "", "", "",Integer.parseInt(reportID.getText().toString()));
这看起来像:
public ExpensesFields createExpenses( String type ,String paidVia,String amount,String employee,
String job,String extra,String costcode,String account,String task,String date,
String vendor,String receipt,String city,String purpose,String description, int reportid ) {
ContentValues values = new ContentValues();
values.put(MySQLiteHelper.EXPENSES_COLUMN_TYPE, type);
values.put(MySQLiteHelper.EXPENSES_COLUMN_PAIDVIA, paidVia);
values.put(MySQLiteHelper.EXPENSES_COLUMN_AMOUNT, amount);
values.put(MySQLiteHelper.EXPENSES_COLUMN_EMPLOYEE, employee );
values.put(MySQLiteHelper.EXPENSES_COLUMN_JOB, job);
values.put(MySQLiteHelper.EXPENSES_COLUMN_EXTRA, extra);
values.put(MySQLiteHelper.EXPENSES_COLUMN_COSTCODE, costcode);
values.put(MySQLiteHelper.EXPENSES_COLUMN_ACCOUNT, account);
values.put(MySQLiteHelper.EXPENSES_COLUMN_TASK, task);
values.put(MySQLiteHelper.EXPENSES_COLUMN_DATE, date);
values.put(MySQLiteHelper.EXPENSES_COLUMN_VENDOR, vendor);
values.put(MySQLiteHelper.EXPENSES_COLUMN_RECEIPT, receipt);
values.put(MySQLiteHelper.EXPENSES_COLUMN_CITY, city);
values.put(MySQLiteHelper.EXPENSES_COLUMN_PURPOSE, purpose);
values.put(MySQLiteHelper.EXPENSES_COLUMN_DESCRIPTION, description);
values.put(MySQLiteHelper.EXPENSES_COLUMN_REPORTID, reportid);
long insertId = database.insert(
MySQLiteHelper.TABLE_EXPENSES, null,
values);
Cursor cursor = database.query(MySQLiteHelper.TABLE_EXPENSES,
allColumns, null, null,
null, null, null);
cursor.moveToFirst();
ExpensesFields newexpense = cursorToexpense(cursor);
cursor.close();
return newexpense;
}
我真的被难住了,所以非常感谢您的任何建议。似乎您正在将id作为字符串进行匹配。数据中是否有空格,并且列的类型不是
INTEGER
?列的类型是INTEGER。我还没有检查空白,我现在就检查。有没有办法消除结果中的空白?我还添加了用于向dbIf添加条目的代码reportid
Is INTEGER SELECT语句应该是“SELECT*from”+MySQLiteHelper.TABLE_EXPENSES+”其中reportid=“+1AH非常感谢,就是这样
public ExpensesFields createExpenses( String type ,String paidVia,String amount,String employee,
String job,String extra,String costcode,String account,String task,String date,
String vendor,String receipt,String city,String purpose,String description, int reportid ) {
ContentValues values = new ContentValues();
values.put(MySQLiteHelper.EXPENSES_COLUMN_TYPE, type);
values.put(MySQLiteHelper.EXPENSES_COLUMN_PAIDVIA, paidVia);
values.put(MySQLiteHelper.EXPENSES_COLUMN_AMOUNT, amount);
values.put(MySQLiteHelper.EXPENSES_COLUMN_EMPLOYEE, employee );
values.put(MySQLiteHelper.EXPENSES_COLUMN_JOB, job);
values.put(MySQLiteHelper.EXPENSES_COLUMN_EXTRA, extra);
values.put(MySQLiteHelper.EXPENSES_COLUMN_COSTCODE, costcode);
values.put(MySQLiteHelper.EXPENSES_COLUMN_ACCOUNT, account);
values.put(MySQLiteHelper.EXPENSES_COLUMN_TASK, task);
values.put(MySQLiteHelper.EXPENSES_COLUMN_DATE, date);
values.put(MySQLiteHelper.EXPENSES_COLUMN_VENDOR, vendor);
values.put(MySQLiteHelper.EXPENSES_COLUMN_RECEIPT, receipt);
values.put(MySQLiteHelper.EXPENSES_COLUMN_CITY, city);
values.put(MySQLiteHelper.EXPENSES_COLUMN_PURPOSE, purpose);
values.put(MySQLiteHelper.EXPENSES_COLUMN_DESCRIPTION, description);
values.put(MySQLiteHelper.EXPENSES_COLUMN_REPORTID, reportid);
long insertId = database.insert(
MySQLiteHelper.TABLE_EXPENSES, null,
values);
Cursor cursor = database.query(MySQLiteHelper.TABLE_EXPENSES,
allColumns, null, null,
null, null, null);
cursor.moveToFirst();
ExpensesFields newexpense = cursorToexpense(cursor);
cursor.close();
return newexpense;
}