我是android新手。 在我的应用程序中我使用了四个类。加载页面,菜单类,报警集类和数据库类。当我点击加载页面中的一个按钮进入菜单类,在菜单类中我点击报警设置选项,它进入报警设置类。设置报警后它将数据保存在数据库中。我希望将菜单类中的数据显示为列表视图,因此我再次在菜单类中打开数据库并使用游标获取数据,并在列表视图中显示,
但我的问题是当用户第一次启动应用程序时,他点击加载页面中的按钮,他必须转到菜单类,但是在那个时间会发生错误。因为在菜单类中我打开了数据库,但表不存在。我在报警集class中创建表。没有表,它无法处理光标。 所以我想知道在创建数据库后表是退出还是不退出。 我的代码用于创建数据库
alarmDB = this.openOrCreateDatabase(CRAZY_ALARM_DB_NAME, MODE_PRIVATE, null);
答案 0 :(得分:0)
您可以使用以下SQL语句检查表是否存在:
SELECT name FROM sqlite_master WHERE type='table' AND name='table_name';
如果结果光标为null或为空,则表格不存在。
答案 1 :(得分:0)
另一种方法是使用try / catch。这将从错误/崩溃中停止,您可以在发生异常时设置选项。
try
{
alarmDB = this.openOrCreateDatabase(CRAZY_ALARM_DB_NAME, MODE_PRIVATE, null);
}
catch(Exception e)
{
Log.v("Hello","Exception trying to open database:" + e.toString());
}
对于桌子来说,它会是一样的。像:
final String CREATE_TABLE_USER =
"CREATE TABLE tbl_user ("
+ "id INTEGER,"
+ "name TEXT,"
+ "email TEXT,"
+ "password TEXT,"
+ "terms TEXT);";
try
{
db.execSQL(CREATE_TABLE_USER);
}
catch (Exception e)
{
Log.v("Hello","Exception trying to create table:" + e.toString());
}
如果您需要所有表格的列表,那么您可以在此处查看类似的问题:Retrieve a list of all tables in the database