2011-04-30 83 views
0

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

我现在所做的是用户创建一个列表,他们点击一个加号按钮,输入一个列名,列表视图显示他们创建的列表(列表视图插入到ArrayList中)。我想获取该ArrayList并使用这些字符串来创建表列。

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

我的问题是:

  1. 什么叫扩展了SQLiteOpenHelper创建数据库类?这是从启动应用程序自动运行?还是我在我的活动中称它?

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

+0

问:我能不能创建一个数据库,并创建数据库表中的常规活动? – 2011-04-30 02:36:22

回答

2
  1. 实施SQLiteOpenHelper “规定” 主要有两种方法供您覆盖:的onCreate和onUpgrade。 onCreate将在您第一次创建助手实例时自动调用,并且只有在数据库尚不存在的情况下才会自动调用。它位于执行创建语句的onCreate中。

    然后,您可以使用此帮助程序对象来获取数据库的实例,该实例可以是可读的或可写的,具体取决于您需要的内容:​​和getReadableDatabase。这些方法返回一个可以执行查询的数据库对象。

  2. 从这里,您可以将帮助程序包装在超类中,或者只需将您的查询/插入/删除/更新方法添加到帮助程序。这些将采取一个可读或可写的实例,并且,例如,插入你想要添加的任何列表。 Intents在这里没有必要,你将直接得到Helper/Wrapper实例并在那里执行你的操作。

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

    代码的活动: -

编辑如何在ArrayList中您SQLiteOpenHelper通过

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

对于#2,我不确定是否正确表达了我的问题...... ArrayList包含表列的名称。因此,当用户点击GO时,应用程序将通过Array LIst并使用其字符串创建表格列。 – 2011-04-30 03:48:20

+0

这是用户要做的第一件事情吗?您可以将该ArrayList作为参数传递给SQLiteOpenHelper的构造函数,并将其存储在实例变量中并在onCreate中使用它。 – dmon 2011-04-30 04:38:39

+0

@dmon:是的,用户在继续创建SQL表之前先填充ArrayList。现在我只是发现了这一点,但没有经过测试。我可以在活动类中编写完整的SQL类吗? – 2011-04-30 04:43:35