2012-06-04 3 views
2

Я новичок в базах данных SQLite и нуждаюсь в помощи с использованием внешнего текстового файла для создания исходной базы данных для хранения множества элементов, которые можно выбрать и добавить во вторую базу данных. Чтобы поместить все это в контекст, я хочу иметь исходную базу данных, в которой хранится список элементов продуктового магазина. Каждый элемент будет иметь две черты с ними, ИМЯ и ТИП. Таким образом, есть такие элементы, какКак вставить данные из текстового файла в базу данных sql в android?

мне нужно идти от чего-то вроде этого (имя хлеба, ТИП Bakery ИМЯ виноградного сока, напитка типа NAME для зубных щеток, ТИП туалетные принадлежности...):

GROCERYSTORE.TXT 
-- -- -- -- -- -- 

NAME - TYPE 

Bread - Bakery 

Rolls - Bakery 

Juice - Beverages 

Soda - Beverages 

к этому:

dBHelper.insert("Bread", "Bakery"); 

или:

dBHelper.insert(name, type); 

для каждого элемента в текстовом файле.

Прежде всего, я хотел бы знать, как отформатировать этот текстовый файл или любой другой тип файла, который может быть прочитан и вставлен в базу данных, если текстовый файл не самый простой способ сделать это.

Во-вторых, как я могу прочитать этот текстовый файл и вставить его в базу данных?

Я думаю, что буду использовать буферизованный считыватель и входной поток в цикле for, чтобы идти и вставлять каждый элемент в базу данных. Я просто не уверен, как разбирать каждую строку, чтобы каждый элемент указывал имя и тип, который нужно вставить в базу данных, и как форматировать текстовый файл для чтения.

Любая помощь будет принята с благодарностью, поскольку я очень мало знаю об использовании внешних файлов для импорта данных в базу данных sql, которая относится к моей ситуации.

+0

Если вы идете в таком формате: String [] токенов = line.split («-»); insert (токены [0] .trim(), токены [1] .trim()); –

ответ

1

В моих приложениях, которые имеют статические или базы данных по умолчанию, я использую файл XML для моих данных вроде этого:

default_grocerystore.xml хранится в папке активов:

<default_grocerystore> 
    <grocery> 
      <name>Bread</name> 
      <type>Bakery</type> 
    </grocery> 
    <grocery> 
      <name>Rolls</name> 
      <type>Bakery</type> 
    </grocery> 
    <grocery> 
      <name>Juice</name> 
      <type>Beverages</type> 
    </grocery> 
    <grocery> 
      <name>Soda</name> 
      <type>Beverages</type> 
    </grocery> 
</default_grocerystore> 

Тогда в onCreate в моем классе базы данных я создаю свои таблицы базы данных я заселить их с XML, как это:

private void populateGrocery(SQLiteDatabase db) { 
        ArrayList<GroceryObj> groceryArrayList; 
        groceryArrayList = buildGroceryArrayList(); 
        String insertStmt = null; 
        for (int i = 0; i < groceryArrayList.size(); i++) { 
          insertStmt = "INSERT INTO " + GROCERY_TABLE + " (" 
              + GROCERY_KEY_NAME + ", " + GROCERY_KEY_TYPE + ") " 
              + "VALUES (\"" 
              + groceryArrayList.get(i).getName() 
              + "\", \""+groceryArrayList.get(i).getType()+"\");"; 
          db.execSQL(insertStmt); 
        } 

private ArrayList<GroceryObj> buildGroceryArrayList() { 
        ArrayList<GroceryObj> aL = new ArrayList<GroceryObj>(); 
        DocumentBuilderFactory factory = DocumentBuilderFactory 
            .newInstance(); 
        try { 
          DocumentBuilder builder = factory.newDocumentBuilder(); 
          InputStream raw = context.getAssets().open(
              "default_grocerys.xml"); 
          Document dom = builder.parse(raw); 
          Element root = dom.getDocumentElement(); 
          NodeList groceryItems = root.getElementsByTagName("grocery"); 
          for (int i = 0; i < groceryItems.getLength(); i++) { 
            String name= null; 
            String type= null; 
            Node item = groceryItems.item(i); 
            NodeList groceryItem = item.getChildNodes(); 
            for (int j = 0; j < groceryItem.getLength(); j++) { 
              Node nodeItem= groceryItem.item(j); 
              String nodeName= noteItem.getNodeName(); 
              if (nodeName.equalsIgnoreCase("name")) { 
                name= nodeItem.getFirstChild().getNodeValue(); 
              } else if (nodeName.equalsIgnoreCase("type")) { 
                type= nodeItem.getFirstChild().getNodeValue(); 
              } 
            } 
            aL.add(new GroceryObj(name, type)); 
          } 
        } catch (Exception e) { 
          e.printStackTrace(); 
        } 
        return aL; 
      } 
      } 
+0

Спасибо за это! Он определенно указал мне больше на правильное направление. Теперь мне нужно выяснить, как просматривать базу данных в моем спискеView. Я не могу понять, что поставить для моего DatabaseAdapter. – MattF2288

+0

Привет, сэр, я видел ваш код. Могу ли я спросить, что такое GroceryObj? Когда я пытаюсь использовать ваш код, я получаю ошибки в этой строке. Извините за это. Благодаря! – ljpv14

+0

GroceryObj был бы обычным классом объектов, который вам нужно будет создать и включить в свой код. – Woodsy

Смежные вопросы