试图从sqlite调用user_id

时间:2019-05-21 19:29:39

标签: java android-sqlite

我正在尝试从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中代表的几乎所有解决方案

1 个答案:

答案 0 :(得分:0)

来自:https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase#execSQL(java.lang.String)

  

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;
}