java - 尝试从 sqlite 调用 user_id

标签 java android-sqlite

我尝试从 sqlite 数据库调用 user_id,但收到此错误

android.database.sqlite.SQLiteException: unknown error (code 0 SQLITE_OK): Queries can be performed using SQLiteDatabase query or rawQuery methods only. at android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(Native Method)

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 和在线中提供的几乎所有解决方案

最佳答案

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

public void execSQL (String sql)
Execute a single SQL statement that is NOT a SELECT or any other SQL statement that returns data.

所以删除这一行:

db.execSQL(query);

方法 execSQL() 不用于执行获取行的查询,例如 SELECT 语句。您可以将它与 INSERT、UPDATE、CREATE 等一起使用。
另外,我认为您希望将用户的 id 作为 Cursor 返回,对吗?
那么为什么:

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

关于java - 尝试从 sqlite 调用 user_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56245223/

相关文章:

JavaPOET - 只有类有父类(super class),而不是 INTERFACE

java - 计算平均字长

android - ORDER BY 不对记录进行排序

Android Sqlite 数据库设置问题

Android SQLiteOpenHelper 错误 - 对 super 的调用必须是构造函数中的第一条语句

java - MongoDB regex,与控制台相比,我从 Java API 得到了不同的答案

java - 如果文件名包含空格,我们如何在 Android 中使用 URLConnection 下载?

java - 如何从阿拉伯语翻译成英语?

android - 当应用程序处于后台或关闭状态时,无法将记录从 Firebase 消息服务插入 SQLite 数据库

android - 无法在 Android 中使用 SQLite 的 DATE 列上的 WHERE 检索数据库记录