Android SQLite问题

时间:2011-04-30 02:27:17

标签: android sqlite

我在这里问了一些关于SQLite的问题,也许是因为我还没有完全理解它是如何工作的。我正在阅读两本使用教程和示例的书籍,但我很难弄清楚我将如何做到这一点。

我要做的是创建列表的用户,他们点击加号按钮,输入列名称,列表视图显示他们创建的列表(列表视图插入到ArrayList中)。我想采用ArrayList并使用字符串来创建表列。

现在,我使用的示例是创建扩展SQLiteOpenHelper的类和另一个只扩展Activity并显示布局和数据的类。

我的问题是:

  1. 什么调用扩展SQLiteOpenHelper的类来创建数据库?这是从启动应用程序自动运行的吗?或者我在活动中称呼它?

  2. 我计划在FOR循环中使用ArrayList构建一个长字符串,这样我就可以为其列创建CREATE TABLE字符串。我如何将ArrayList带到SQLite类?我正在考虑使用捆绑的Intent,但我不确定这是否会起作用(或者它会吗?)。

1 个答案:

答案 0 :(得分:2)

  1. 实现SQLiteOpenHelper“提供”两种主要方法供您覆盖:onCreate和onUpgrade。 onCreate将在您第一次创建帮助程序实例时自动调用,并且仅在数据库尚不存在时才会自动调用。它位于onCreate中,您可以在其中执行create语句。

    然后,您可以使用此帮助程序对象来获取数据库的实例,可以是可读的也可以是可写的,具体取决于您的需求:getWritableDatabasegetReadableDatabase。这些方法返回一个Database对象,您可以在其上执行查询。

  2. 从这里开始,您可以将帮助程序包装在超类中,或者只是将查询/插入/删除/更新方法添加到帮助程序中。这些将采用可读或可写的实例,例如,插入您尝试添加的任何内容的列表。此处不需要意图,您将直接获得Helper / Wrapper实例并在那里执行操作。

  3. 编辑 - 如何将arraylist传递给您的SQLiteOpenHelper:

    class DatabaseHelper extends SQLiteOpenHelper {
        List columns;
        public AccountsDatabaseHelper(Context context, List columns) {
          super(context, DATABASE_NAME, null, DATABASE_VERSION);
          this.columns = columns;
        }
    
        ...
    }
    

    活动中的代码:

      ...
      DatabaseHelper helper = new DatabaseHelper(this, myArrayList);
      helper.getWriteableDatabase(); //This will execute the onCreate
      ...