猿问

如何更新sqlite记录?

我为我的学校项目编码了这个。当我调用 update 方法时它崩溃了。错误如下:


E/SQLiteLog: (1) table userInfo has no column named userInfo E/SqDb: Err ins ... android.database.sqlite.SQLiteException: table userInfo has no column named userInfo (code 1): , while compiling: INSERT INTO userInfo (password,userInfo) VALUES (?,?) at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:921) at android.database.sqlite.SQLiteConnection .prepare(SQLiteConnection.java:532) at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58) at android.database.sqlite.SQLiteStatement .(SQLiteStatement.java:31) 在 android.database.sqlite。SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1570) at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1427) at com.example.prabuddhaabisheka.mock.DBHelper.addInfo(DBHelper.java:46) at com.example .prabuddhaabisheka.mock.Home$2.onClick(Home.java:59) 在 android.view.View.performClick(View.java:5232) 在 android.view.View$PerformClick.run(View.java:21289) 在 android .os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:168) at android.app.ActivityThread。 main(ActivityThread.java:5885) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller。在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687) 运行(ZygoteInit.java:797)


泛舟湖上清波郎朗
浏览 193回答 3
3回答

MMMHUHU

您必须先增加数据库版本,然后再更改 sqlite 的 On-upgrade 方法。   @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {        if(newVersion > oldVersion){            db.execSQL("DROP TABLE IF EXISTS " +......);            db.execSQL("CREATE TABLE IF NOT EXISTS " +......);            insertColumnIfNotAvailableinTable(SQLiteDatabase db, String tableName, String columnName, String columnType);        }    } 

慕勒3428872

错误很明显:....sqlite.SQLiteException: table userInfo has no column named userInfo (code 1):, while compiling: INSERT INTO userInfo(password,userInfo) VALUES (?,?) at...当您调用该方法时public boolean addInfo( ContentValues values )您将作为内容值传递,即与表同名的值。你必须检查两件事:您在哪里使用UserProfile.Users.TABLE_NAME(我认为它的值是 userInfo检查您传递给addInfo方法使用的内容值的内容。希望能帮助到你。

墨色风雨

如果您在创建表后尝试向该表添加新行,请尝试删除该表并重新创建它。去除 sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);在此之后,您可以再次重新创建表
随时随地看视频慕课网APP

相关分类

Java
我要回答