我想创建一个表,其中包含 1 个预定义行。
因此,我在 onCreate(); 中添加该行
以下是我的代码:
private static final String CREATE_CATEGORY_TABLE = "CREATE TABLE CATEGORYTABLE (_id INTEGER PRIMARY KEY AUTOINCREMENT, category_name VARCHAR(255));";
private static final String DROP_CATEGORY_TABLE = "DROP TABLE IF EXISTS CATEGORYTABLE";
private static final String INSERT_PREDEFINED_CATEGORY = "INSERT INTO CATEGORYTABLE VALUES('Category 1');";
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
try {
db.execSQL(DROP_CATEGORY_TABLE);
onCreate(db);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
try {
db.execSQL(CREATE_CATEGORY_TABLE);
db.execSQL(INSERT_PREDEFINED_CATEGORY); <-- error on this line
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
错误信息 :
sqlite returned: error code = 1, msg = table CATEGORYTABLE has 2 columns but 1 values were supplied
Failure 1 (table CATEGORYTABLE has 2 columns but 1 values were supplied) on 0x287cb8 when preparing 'INSERT INTO CATEGORYTABLE VALUES('Home');'.
这是在表中插入预定义行的正确方法吗?
请帮忙!
该表有 2 列,因此您需要提供 2 个值,或者指定要插入的列名称。改变
INSERT INTO CATEGORYTABLE VALUES('Category 1')
to
INSERT INTO CATEGORYTABLE VALUES(NULL, 'Category 1')
or
INSERT INTO CATEGORYTABLE(category_name) VALUES('Category 1')
无论如何,捕获异常也是一种不好的做法onCreate()
or onUpgrade()
。如果出现问题,回调不应正常返回。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)