【问题标题】:E/SQLiteDatabase: Error inserting table USERS has no column named username (Sqlite code 1 SQLITE_ERROR)E/SQLiteDatabase:插入表 USERS 时出错没有名为用户名的列(Sqlite 代码 1 SQLITE_ERROR)
【发布时间】:2022-11-16 04:12:04
【问题描述】:

这是我创建数据库表的代码

public void onCreate(SQLiteDatabase db) {
    String query = "CREATE TABLE " + TABLE_NAME +
                    "(" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
                    COLUMN_USERNAME + " TEXT, " +
                    COLUMN_PASSWORD + " INTEGER " + ")";
    db.execSQL(query);
}

这是添加用户

public Boolean addUser(String username, String password){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues cv = new ContentValues();

    cv.put(COLUMN_USERNAME, username);
    cv.put(COLUMN_PASSWORD, password);
    long result = db.insert(TABLE_NAME, null, cv);

    if (result == -1) {
        Toast.makeText(context, "Failed", Toast.LENGTH_SHORT).show();
        return  false;
    } else {
        Toast.makeText(context, "Registration Successful!", Toast.LENGTH_SHORT).show();
        return true;
    }
}

每当我运行应用程序并输入用户名和密码时,它总是返回“失败”

在错误中我有这个:

E/SQLiteLog: (1) 
E/SQLiteDatabase: Error inserting table USERS has no column named username (Sqlite code 1 SQLITE_ERROR): , while compiling: INSERT INTO USERS(username,password) VALUES (?,?), (OS error - 2:No such file or directory)

我到处看,我知道有类似的问题,但我似乎找不到我的错误。请帮忙

【问题讨论】:

  • 如果您的应用程序的早期版本存在旧版本的数据库 - 您可以卸载您的应用程序(或清除其数据)以删除旧的数据库文件。然后创建一个带有此版本 onCreate() 的新数据库。
  • 现在注册成功了,不过也就这样了。当我转到文件资源管理器时,数据库文件夹没有出现,同样的错误仍然存​​在(错误:运行方式:/data 拥有者错误:0/1000,而不是 1000)。如果我在模拟器上运行它很好,但是当我在我的设备上运行它时,文件资源管理器中没有创建数据库。

标签: java android android-sqlite


【解决方案1】:

这可能不会直接解决您的问题,但它可以帮助您更好地了解正在发生的事情并自行调查(并且在您开发应用程序时对于未来的数据库问题将是无价的)。下载像 DB Browser for SQLite 这样的客户端,并且(假设您正在通过模拟器在本地进行测试)在您的应用程序代码中创建数据库,并在控制台打印出它的路径。然后,您可以在浏览器中打开数据库,更好地了解其中可能导致您出现问题的情况。

此外,我不确定这是否会导致问题,但您在您生成的查询字符串中的 id 列定义和 username 之间缺少一个空格。

【讨论】:

  • 我已经下载了 SQLite 浏览器。为了打开数据库,我必须从 android studio 中的项目下载数据库。我转到设备文件资源管理器并遵循以下路径:数据 > 数据 > 包名称。它里面应该有一个文件夹“数据库”,但它是空的。它向我显示错误:run-as: /data has wrong owner: 0/1000, not 1000
【解决方案2】:

您必须卸载您的应用程序并重新安装。

【讨论】:

    猜你喜欢
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2022-08-10
    • 1970-01-01
    • 2015-06-07
    • 2020-09-27
    相关资源
    最近更新 更多