gpt4 book ai didi

java - 更改了DB,更新了DB版本无法添加数据也无法不添加数据

转载 作者:行者123 更新时间:2023-12-01 11:16:43 25 4
gpt4 key购买 nike

我正在开发一个使用两个数据库的 Android 应用程序。最近,我必须向其中一个数据库添加一列新列。这样做后,它破坏了我的数据库。在我的设备上安装和重新安装该应用程序没有任何反应,而且我还更新了数据库版本。

尝试插入数据会出现此错误:

E/SQLiteLog﹕ (1) table message_table has no column named msg_type

因此,我尝试从插入中取出“msg_type”列,然后插入导致出现此错误的数据:

E/SQLiteLog﹕ (1299) abort at 8 in [INSERT INTO message_table(recipient,message) VALUES (?,?)]: NOT NULL constraint failed: message_table.msg_typeTEXT

这是 oncreate:

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (" +
COL_1 + " INTEGER PRIMARY KEY AUTOINCREMENT, " + //msg_id
COL_2 + " TEXT NOT NULL, " + //recipient
COL_3 + " TEXT, " + //message
COL_4 + "TEXT NOT NULL);"); //message type
}

和插入类:

public boolean addMessage(String recipient, String message, String type){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();

//populate message object
contentValues.put(COL_2, recipient);
contentValues.put(COL_3, message);
contentValues.put(COL_4, type);

//insert new message
long result = db.insert(TABLE_NAME, null, contentValues);

//check if operation was successful
if(result == -1)
return false;
else
return true;
}

对于这两种情况我怎么会收到错误?我认为它无法识别从第一个错误添加的新列,但它也不喜欢没有接收到该列的数据。

最佳答案

发生错误的原因是列名和文本之间没有空格。所以列名就变成了message_table.msg_typeTEXT:

COL_4 + "TEXT NOT NULL);"); //message type

这应该可以修复错误:

COL_4 + " TEXT NOT NULL);"); //message type

关于java - 更改了DB,更新了DB版本无法添加数据也无法不添加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31738682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com