如果创建数据库后表是否存在,我怎么知道?

时间:2011-09-06 15:36:54

标签: android

我是android新手。  在我的应用程序中我使用了四个类。加载页面,菜单类,报警集类和数据库类。当我点击加载页面中的一个按钮进入菜单类,在菜单类中我点击报警设置选项,它进入报警设置类。设置报警后它将数据保存在数据库中。我希望将菜单类中的数据显示为列表视图,因此我再次在菜单类中打开数据库并使用游标获取数据,并在列表视图中显示,

但我的问题是当用户第一次启动应用程序时,他点击加载页面中的按钮,他必须转到菜单类,但是在那个时间会发生错误。因为在菜单类中我打开了数据库,但表不存在。我在报警集class中创建表。没有表,它无法处理光标。 所以我想知道在创建数据库后表是退出还是不退出。 我的代码用于创建数据库

alarmDB = this.openOrCreateDatabase(CRAZY_ALARM_DB_NAME, MODE_PRIVATE, null);

2 个答案:

答案 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