android中没有这样的表异常

时间:2010-10-30 17:06:28

标签: android database sqlite

private static final String DB_NAME = "MyDebts.db";
 private static final String CREATE_DB_QUERY = 
  "CREATE TABLE " + Dao.CONTACTS_TABLE_NAME + " (ContactId varchar(64), Credit integer);\n" +
  "CREATE TABLE " + Dao.SETTINGS_TABLE_NAME + " (Name varchar(64), Value varchar(64));"
  ;
    @Override
     public void onCreate(SQLiteDatabase db) {
      db.execSQL(CREATE_DB_QUERY);
     }

正如我在调试模式中看到的那样db.execSql没有任何异常,但在此代码中

String lastStepIndexString = null;
  try {
   lastStepIndexString = SettingsDao.readSetting("last-step-index");
  } catch (Exception ex) {
   makeToast(ex.getMessage());
  }

catch()由异常触发,消息如

  

没有名称为“首选项”的表

如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

是否有名为Preferences的表?

使用此处描述的方法检查数据库: http://developer.android.com/guide/developing/tools/adb.html#sqlite

我不确定DAO.SETTINGS_TABLE_NAME是什么,也许您可​​以尝试直接创建数据库名称偏好。

 private static final String CREATE_DB_QUERY = 
  "CREATE TABLE " + Dao.CONTACTS_TABLE_NAME + " (ContactId varchar(64), Credit integer);\n" +
  "CREATE TABLE Preferences(Name varchar(64), Value varchar(64));";

答案 1 :(得分:0)

解决方案:单独查询la:

db.execSQL(CREATE_DB_QUERY_1);
db.execSQL(CREATE_DB_QUERY_2);