【问题标题】:Additional table not created未创建附加表
【发布时间】:2012-03-11 02:12:13
【问题描述】:

我正在尝试向我的应用程序添加第二个表,但我没有任何运气。这两个表是它们自己的类并且是单例的。我在 onUpgrade 方法中传入数据库的引用,并再次作为实例变量。

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    transTable = TransactionTable.getInstance(db);
    sysTable = SystemTable.getInstance(db);

    onCreate( db );

    transTable.updateTable();
    sysTable.updateTable();
}

onCreate 方法只是调用所有表中的 create 方法。

@Override
public void onCreate(SQLiteDatabase db) {
    transTable.createTable();
    sysTable.createTable();
}

第二个表 sysTable 在执行下面的 create 语句时不会抛出异常。

public void createTable() {
    db.rawQuery("CREATE TABLE IF NOT EXISTS " + tableName + " ("
            + "_id INTEGER PRIMARY KEY AUTOINCREMENT, " + lastUsed
            + " INTEGER, " + balance + " INTEGER, " + accountName
            + " TEXT, UNIQUE ( " + accountName + " ) )", null);
}

但是,当我运行如下简单查询时:

 db.rawQuery("select * from " + tableName, null);

我收到一条错误提示

 android.database.sqlite.SQLiteException: no such table: system_t: , 
 while compiling: select * from system_t

删除或创建第一个表没有问题。有什么想法吗?

【问题讨论】:

    标签: android sqlite oncreate onupdate


    【解决方案1】:

    更改createTable方法的代码:

     db.rawQuery
    

    db.execSQL()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-08
      • 2023-04-08
      • 1970-01-01
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      • 2012-10-16
      • 1970-01-01
      相关资源
      最近更新 更多