You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

首次学习SQLite CRUD操作时更新数据遇'no such column: key_name'错误求助

Fixing SQLite "no such column: key_name" Error in Update Operation

Hey there! Let's break down and fix this issue you're hitting. The error message clearly says no such column: key_name because your update query is referencing a column that doesn't exist in your database table. Let's look at where the problem is:

The Root Cause

In your MyDbHandler class, you've defined constants for your column names (like key_name = "name"), which you correctly used when creating the table. But in the updateUserDetails method, you're using the string literal "key_name" instead of the actual constant variable key_name when adding values to ContentValues.

Your database table has columns named name, email, phone, but your update code is trying to set values for columns named key_name, key_email, key_phone—which don't exist!

Corrected Code for updateUserDetails

Here's the fixed version of your update method:

public boolean updateUserDetails(UserModel userModel){
    SQLiteDatabase database = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    // Use the constant variables instead of string literals
    contentValues.put(key_name, userModel.getName());
    contentValues.put(key_email, userModel.getEmail());
    contentValues.put(key_phone, userModel.getPhone());
    // Execute the update and check if it was successful
    int rowsAffected = database.update(key_table, contentValues, key_id + "=?", new String[] {userModel.getId()});
    database.close(); // Don't forget to close the database!
    return rowsAffected > 0; // Return true only if at least one row was updated
}

Additional Notes

  • Why Uninstalling Didn't Work: The issue is a code logic error, not a cached database problem. Uninstalling removes the old database, but your code still tries to reference the wrong column names when creating the new database connection—so the error persists.
  • Improve onUpgrade: Right now your onUpgrade method is empty. If you ever need to modify your table structure later, you should add logic here to drop/recreate the table (or migrate data) to avoid similar issues. For example:
    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
        // Drop older table if exists
        sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + key_table);
        // Create tables again
        onCreate(sqLiteDatabase);
    }
    

That should resolve the SQLiteException you're seeing. Give it a try!

内容的提问来源于stack exchange,提问作者Amit Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:09:27