2014-03-01 91 views
0

我是SQLite的新手,这里是故事;在哪里存储要在安装时插入到SQLite的值

我正在开发一个apk,它是一种测验应用程序。我想在SQLite数据库中存储问题和答案。 (我也不确定这是否是存储数据的最佳方式,在SQLite中)

在onCreate()方法中,我应该创建数据库并插入所有问题,答案等。所以,我不确定在哪里在将数据插入数据库表之前,将数据插入数据库。

我的意思是;

values.put("key", "What is abc"); 
** insert 
values.put("key", "What is def"); 
** insert 
values.put("key", "What is ghi"); 
** insert 
values.put("key", "What is xyz"); 
** insert 
... 

我应该在哪里得到这些字符串(什么是bla bla)插入到表中?

如果这是一个Windows应用程序,我会把它们放在一个.txt文件中,从那里读取并插入行。

在android中,我不知道。

感谢您的任何建议。

回答

2

我也不知道这是存储数据的最佳方式,SQLite中

还有更糟糕的选择。 :-)

在onCreate()方法我应该创建数据库,并插入所有问题,答案等

我准备数据库时间提前,包它与你的应用程序,并部署它using SQLiteAssetHelper。这将更容易编写,更容易维护,运行速度更快。

+0

“我提前准备数据库的时候,包它与您的应用程序” 这可能吗? :) – Mtok

+0

@Mtok:是的,这是可能的。 SQLite被成千上万的开发人员使用,它有很多客户端(命令行,GUI和基于浏览器的)。在开发机器上设置数据库,然后按照[SQLiteAssetHelper'指示](https://github.com/jgilfelt/android-sqlite-asset-helper)。 – CommonsWare

0

你可以用这个来read a text file

一旦你在你的SQLiteOpenHelper#onCreate()方法中,你会添加你的默认值。要做到这一点

0

一种方法是:

  1. Store中的数据在您的RES/XML文件夹原料。
  2. 创建解析器。 (DOM可用于小文件,如果文件大小较大,SAX会更好)
  3. 解析onCreate中的数据并插入值。

    例如: `public void onCreate(SQLiteDatabase db){ ArrayList quizDataList;

    quizDataList = ParseQuizData.getQuizData(context); 
        ContentValues values = new ContentValues(); 
        try { 
         // Create Database 
         db.execSQL(TABLE_CREATE); 
         for (Iterator<QuizData> iterator = quizDataList.iterator(); iterator.hasNext();) { 
          QuizData quizData = iterator.next(); 
          values.put(COLUMN1, quizData.getAttributeFirst()); 
          values.put(COLUMN2, quizData.getAttributeSecond()); 
    
          db.insertOrThrow(TABLE_NAME, null, values); 
    
         } 
    
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
    

    `

+1

如果您打算使用XML路由,请将XML放在'res/xml /'中,并使用从“Resources”对象获取的'XmlPullParser',因为这样会快速解析大约10倍。 – CommonsWare