我的数据库存在问题。 我有两列,我的应用程序运行良好,但当我尝试添加新列时,遇到了问题:
12-03 21:04:33.716:I / SqliteDatabaseCpp(726):sqlite返回:错误 code = 1,msg =没有这样的列:Content3, 分贝= /数据/数据/ com.example.pp /数据库/ MY_DATABASE
public class SQLiteAdapter {
public static final String MYDATABASE_NAME = "MY_DATABASE";
public static final String MYDATABASE_TABLE = "MY_TABLE";
public static final int MYDATABASE_VERSION = 1;
public static final String KEY_ID = "_id";
public static final String KEY_CONTENT1 = "Content1";
public static final String KEY_CONTENT2 = "Content2";
public static final String KEY_CONTENT3 = "Content3";
//create table MY_DATABASE (ID integer primary key, Content text not null);
private static final String SCRIPT_CREATE_DATABASE =
"create table " + MYDATABASE_TABLE + " ("
+ KEY_ID + " integer primary key autoincrement, "
+ KEY_CONTENT1 + " text, "
+ KEY_CONTENT2 + " text, "
+ KEY_CONTENT3 + " text);";
这是一个插入函数
public long insert(String content1, String content2, String content3){
ContentValues contentValues = new ContentValues();
contentValues.put(KEY_CONTENT1, content1);
contentValues.put(KEY_CONTENT2, content2);
contentValues.put(KEY_CONTENT3, content3);
return sqLiteDatabase.insert(MYDATABASE_TABLE, null, contentValues);
}
这是一个光标
public Cursor queueAll(){
String[] columns = new String[]{KEY_ID, KEY_CONTENT1, KEY_CONTENT2, KEY_CONTENT3};
Cursor cursor = sqLiteDatabase.query(MYDATABASE_TABLE, columns,
null, null, null, null, null);
return cursor;
}
请帮我确定一下我的问题。 帮助Android开发人员初学者:)
答案 0 :(得分:1)
如果您在创建时填充表格,或者表格内容不需要从版本1保留到下一版本,则自动递增您的表格版本编号,如上所述并添加以下内容到SQLiteAdapter
:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion >= newVersion)
return;
db.execSQL("DROP TABLE IF EXISTS " + MYDATABASE_TABLE);
onCreate(db);
}
请注意,这将删除表格并重新创建。如果内容必须保留,那么您必须编写适合您的更改的ALTER TABLE
脚本。
如果必须保留该表格,请查看this StackOverflow Q&A,了解如何在Alter Table
中完成onUpgrade()
。同样,您必须进行修改以满足您对已更改内容的需求,并且下次更改数据库时,您将再次增加数据库版本号以及重写以匹配您所做的更改。 / p>
答案 1 :(得分:0)
更新列或表时,甚至需要更新数据库版本。如果数据库中有多个表,则需要确保文件中数据库的版本号相同。如果版本号存在冲突,则表不会同时更新。