我正在尝试从sqlite数据库调用user_id,但出现此错误
android.database.sqlite.SQLiteException:未知错误(代码0 SQLITE_OK):只能使用SQLiteDatabase查询或rawQuery方法执行查询。 在android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(本地方法)
public Database user_id(){
SQLiteDatabase db = getReadableDatabase();
String query = String.format("SELECT user_id FROM OrderDetails ;");
db.execSQL(query);
Cursor c = db.rawQuery(query, null);
if (c != null && c.moveToFirst()) {
c.moveToFirst();
}
return user_id();
}
请不要推荐其他解决方案,因为我已经坚持了一天以上,而且我尝试了stackoverflow和online中代表的几乎所有解决方案
答案 0 :(得分:0)
public void execSQL(字符串sql)
执行单个SQL语句 不是SELECT或其他任何返回的SQL语句 数据。
因此删除此行:
db.execSQL(query);
方法execSQL()
不用于执行获取行的查询,例如SELECT语句。您可以将其与INSERT,UPDATE,CREATE等配合使用。
另外,我认为您想以Cursor
的形式返回用户ID,对吗?
那为什么:
public Database user_id()
这将返回一个数据库对象(无论它是什么)。
将方法更改为此:
public Cursor user_id(){
SQLiteDatabase db = getReadableDatabase();
String query = "SELECT user_id FROM OrderDetails";
Cursor c = db.rawQuery(query, null);
return c;
}