SQLite逻辑错误
问题描述:
当通过QSB执行查询时,出现以下错误。我已经为QSB创建了具有所需列的数据库。SQLite逻辑错误
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;
}
你可以给它给你的答复队友是例外 – pdiddy
@pdiddy感谢参数(选择,selectionArgs两个,和列)的值。添加了请求的代码。 –
感谢您的代码,但是您能否给出Selection,SelectionArgs和列出的错误的确切值。我真的没有任何错误的代码,这就是为什么我问....也许看到这些参数的值将更有帮助 – pdiddy