正如主题所暗示的那样,我在 sqlite 中创建新表时遇到了一些问题。无论我用我的代码做什么,我都无法在数据库中创建新表。如果我查看数据库,则只有 android_metadata tb,没有别的。创建一个新的代码是:
...
this.createTable(R.string.nametable, "_id INT PRIMARY KEY, " + "parentID INT, " + "name TEXT");
...
public void createTable(int id, String sql) {
String table = this.getStringById(id);
String _sql = "CREATE TABLE " + table + "(" + sql + ")";
Log.d("Controller.createTable", _sql);
this.mCurrentConnection.rawQuery(_sql, null);
try {
Cursor c = this.Select(id, "*", null);
c.close();
Log.d("Controller.createTable", "create finished");
} catch (Exception e) {
Log.d("Controller.createTable", "can't create table: " + table);
}
}
我在我的应用程序的构造器中打开或创建数据库
if(this.mCurrentConnection == null || !this.mCurrentConnection.isOpen()) {
this.mCurrentConnection = this.mContext.openOrCreateDatabase(this.mDB, Context.MODE_PRIVATE , null);
}
我已经尝试了一切:更改 db / tb 的名称,重新安装应用程序,放置“;” 或不在命令末尾,请使用新的干净 vm 进行尝试。我没有找到任何有用的现有帖子/答案来解决我的问题。如果我执行 _sql 语句
CREATE TABLE name_table(_id INT PRIMARY KEY, parentID INT, name TEXT)
在 phpmyadmin (MySQL) 中一切正常。
如果你能帮助我,我会很高兴。
问候亚历克斯
编辑:(回答下面的评论)
@VikramBodicherla:这就是问题所在。create 语句本身并没有引起任何异常。选择(检查)语句确实会抛出一个
04-30 07:34:14.834: E/Database(305): 插入 parentid=-1 时出错 name=blabla 04-30 07:34:14.834: E/Database(305): android.database.sqlite.SQLiteException:
没有这样的表:name_table:,编译时:INSERT INTO name_table(parentid, name) VALUES(?, ?); 04-30 07:34:14.834: E/Database(305): at android.database.sqlite.SQLiteProgram.native_compile(Native Method) 04-30 07:34:14.834: E/Database(305): at android.database .sqlite.SQLiteProgram.compile(SQLiteProgram.java:110) 04-30 07:34:14.834: E/Database(305): at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:59) 04-30 07: 34:14.834: E/Database(305): 在 android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:41) 04-30 07:34:14.834: E/Database(305): 在 android.database.sqlite。 SQLiteDatabase.compileStatement(SQLiteDatabase.java:1027) 04-30 07:34:14.834: E/Database(305): 在 android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1413) 04-30 07:34: 14.834:E/数据库(305):在安卓。