Android SQLite逻辑错误
我在尝试通过QSB执行查询时遇到以下错误。我已经为QSB创建了具有必需列的数据库Android SQLite逻辑错误,android,sqlite,Android,Sqlite,我在尝试通过QSB执行查询时遇到以下错误。我已经为QSB创建了具有必需列的数据库 11-30 20:12:49.805: E/DatabaseUtils(2116): android.database.sqlite.SQLiteException: SQL logic error or missing database 11-30 20:12:49.805: E/DatabaseUtils(2116): at android.database.sqlite.SQLiteQuery.native
11-30 20:12:49.805: E/DatabaseUtils(2116): android.database.sqlite.SQLiteException: SQL logic error or missing database
11-30 20:12:49.805: E/DatabaseUtils(2116): at android.database.sqlite.SQLiteQuery.native_fill_window(Native Method)
11-30 20:12:49.805: E/DatabaseUtils(2116): at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:75)
11-30 20:12:49.805: E/DatabaseUtils(2116): at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:288)
11-30 20:12:49.805: E/DatabaseUtils(2116): at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:269)
11-30 20:12:49.805: E/DatabaseUtils(2116): at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:171)
11-30 20:12:49.805: E/DatabaseUtils(2116): at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:248)
11-30 20:12:49.805: E/DatabaseUtils(2116): at com.simple.search.DatabaseHelper.query(DatabaseHelper.java:65)
11-30 20:12:49.805: E/DatabaseUtils(2116): at com.simple.search.DatabaseHelper.getRecordMatches(DatabaseHelper.java:76)
DatabaseHelper.query
private Cursor query(String selection, String[] selectionArgs,
String[] columns) {
SQLiteDatabase mDb = getReadableDatabase();
SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
builder.setTables(DATABASE_TABLE);
Cursor cursor = builder.query(mDb, columns,
selection, selectionArgs, null, null, null);
if (cursor == null) {
return null;
} else if (!cursor.moveToFirst()) {
cursor.close();
return null;
}
return cursor;
}
public Cursor getRecordMatches(String query, String[] columns) {
String selection = SearchManager.SUGGEST_COLUMN_TEXT_1 + " MATCH ?";
String[] selectionArgs = new String[] {query+"*"};
return query(selection, selectionArgs, columns);
}
public Cursor getRecord(String rowId, String[] columns) {
String selection = "rowid = ?";
String[] selectionArgs = new String[] {rowId};
return query(selection, selectionArgs, columns);
}
编辑:添加了getrecordmatches,添加了getrecord我用一个完全不同的光标解决了这个问题。这是原始的,但它的工作
private Cursor query(String selection, String[] selectionArgs,
String[] columns) {
Log.d(Tag.getTag(this),
("selection : " + selection + ", selectionArgs[0] :"
+ selectionArgs[0] + ", columns :" + columns));
SQLiteDatabase mDb = getReadableDatabase();
String query = selectionArgs[0];
Cursor cursor = mDb
.rawQuery(
"SELECT " + columns[0] +", "+ columns[1] + " FROM " + DATABASE_TABLE + " WHERE " + columns[1] + " LIKE ?",
new String[] { "%" + query + "%" });
if (cursor == null) {
return null;
} else if (!cursor.moveToFirst()) {
cursor.close();
return null;
}
return cursor;
}
您能给出参数值(选择、selectionArgs和列)吗exception@pdiddy谢谢你的回复,伙计。添加了所需的代码。谢谢您提供的代码,但是您是否可以为Selection、SelectionArgs和给出该错误的列提供准确的值。我的代码没有任何问题这就是为什么我要问。。。。也许看到这些参数的值会更有用helpful@pdiddy对不起,迟了答复。互联网问题<代码>选择:建议\u文本\u 1匹配?,selectionArgs[0]:*,columns[]:{BaseColumns.\u ID,SearchManager.suggest\u COLUMN\u文本\u 1}