有人知道我为什么会出现错误吗;没有";一个名为COL2的列?
Error inserting COL2=sdfsdf
android.database.sqlite.SQLiteException: table TWhereToGoList has no column named COL2 (code 1 SQLITE_ERROR): , while compiling: INSERT INTO TWhereToGoList(COL2) VALUES (?)
我的Contract类在这里创建DB变量:
public static final class YourEntry implements BaseColumns {
public static final String TABLE_NAME = "TWhereToGoList";
public static final String intWhereToGoListOID = BaseColumns._ID;
public static final String COL2 = "COL2";
我想问你是否可以帮助我:
我的DB Helper类(片段(:
@Override
public void onCreate(SQLiteDatabase db) {
db.deleteDatabase(new File(DATABASE_NAME));
String createTable = ("CREATE TABLE " + Contract.YourEntry.TABLE_NAME + " (" +
Contract.YourEntry.intWhereToGoListOID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
Contract.YourEntry.COL2 + "TEXT);"
);
db.execSQL(createTable);
public boolean addData(String string) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
//Wo dass die values hingelegt werden @COL2
values.put(Contract.YourEntry.COL2, string);
我在这里得到错误:
谢您的回答,如果您在下面的评论中有任何问题:(long result = db.insert(Contract.YourEntry.TABLE_NAME, null, values);
显然,您在创建数据库时缺少了一个空白:
String createTable = ("CREATE TABLE " + Contract.YourEntry.TABLE_NAME + " (" +
Contract.YourEntry.intWhereToGoListOID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
Contract.YourEntry.COL2 + " TEXT);"
);
在最后一部分中,您应该有一个额外的空间" TEXT);"
,现在是"TEXT);"
SQLiteDatabase
是在调用第一个SQLiteOpenHelper
时自动创建的,并且您正在用db.deleteDatabase(new File(DATABASE_NAME));
行删除它onCreate
。只要删除它,(新鲜(重新安装应用程序,你的数据库应该被正确创建,插入应该开始工作
注意,当你只创建一个表,然后再添加另一列时,你必须在overaddedonUpdate
方法中处理这个问题,onCreate
将不会被再次调用