我是机器人开发的新手,但我正在研究一些 SQL。我有一个扩展 SQLOpenDatabaseHelper 的类,在 onCreate() 方法中我执行了这个:
public static final String CREATE_DB = "CREATE TABLE " + TABLE_VOCAB_INFO
+ "(" + COLUMN_NAME + " TEXT NOT NULL PRIMARY KEY," + COLUMN_URL
+ " TEXT NOT NULL," + COLUMN_DOWNLOADED + "TEXT NOT NULL);";
但是,当我尝试像这样向数据库添加内容时:
//Adding method
ContentValues cv = new ContentValues();
cv.put(COLUMN_NAME, "item " + i);
cv.put(COLUMN_URL, "random url");
cv.put(COLUMN_DOWNLOADED, "true");
open();
database.insert(TABLE_VOCAB_INFO, null, cv);
我得到错误:
(1) no such table: vocab_info
我该如何解决?
编辑:更多信息。
我在助手的 onCreate() 方法中创建数据库,如下所示:
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(CREATE_DB);
} catch (SQLiteException e) {
System.out.println("Error with creation");
}
}
我使用这样的添加方法访问数据库
public void onClick(View viewSelected) {
switch (viewSelected.getId()) {
case R.id.bDownload:
DatabaseManipulator dm = new DatabaseManipulator(this);
dm.open();
dm.addList(null);
dm.addList(null);
dm.addList(null);
dm.addList(null);
dm.addList(null);
for (VocabList list : dm.getAllLists()) {
System.out.println(list.getName());
}
dm.close();
break;
提前致谢
最佳答案
1) 尝试下面的创建表语句。
public static final String CREATE_DB = "CREATE TABLE " + TABLE_VOCAB_INFO
+ "(" + COLUMN_NAME + " TEXT NOT NULL PRIMARY KEY," + COLUMN_URL
+ " TEXT NOT NULL," + COLUMN_DOWNLOADED + " TEXT NOT NULL);";
2) 如果您对表结构
进行任何更改或添加新表,您需要卸载并重新安装
您的应用程序,如onCreate
如果没有创建数据库,则调用一次,如果数据库已经存在,则不会调用 onCreate 并且您的更改不会影响数据库。
为 OP 工作 >> 您也可以通过更改数据库版本来完成此操作。
关于Android SQL 没有这样的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14716632/