为了账号安全,请及时绑定邮箱和手机立即绑定

如何更新sqlite记录?

如何更新sqlite记录?

泛舟湖上清波郎朗 2021-11-17 16:51:58
我为我的学校项目编码了这个。当我调用 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)
查看完整描述

3 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

您必须先增加数据库版本,然后再更改 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);




        }

    } 


查看完整回答
反对 回复 2021-11-17
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

错误很明显:


...

.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 )

您将作为内容值传递,即与表同名的值。你必须检查两件事:

  1. 您在哪里使用UserProfile.Users.TABLE_NAME(我认为它的值是 userInfo

  2. 检查您传递给addInfo方法使用的内容值的内容。

希望能帮助到你。


查看完整回答
反对 回复 2021-11-17
?
墨色风雨

TA贡献1853条经验 获得超6个赞

如果您在创建表后尝试向该表添加新行,请尝试删除该表并重新创建它。

去除

 sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);

在此之后,您可以再次重新创建表


查看完整回答
反对 回复 2021-11-17
  • 3 回答
  • 0 关注
  • 192 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信