2012-06-04 3 views
2

저는 SQLite 데이터베이스가 새로 도입되어 외부 텍스트 파일을 사용하여 선택하여 두 번째 데이터베이스에 추가 할 수있는 항목을 저장하는 초기 데이터베이스를 만드는 데 도움이 필요합니다. 이 모든 것을 문맥에 넣으려면 식료품 점 항목 목록을 저장하는 초기 데이터베이스가 필요합니다. 각 항목에는 NAME과 TYPE이라는 ​​두 가지 특징이 있습니다. 그래서 다음과 같은 항목이어떻게 안드로이드에있는 SQL 데이터베이스에 텍스트 파일의 데이터를 삽입 할 수 있습니까?

것은 내가 같은 것을에서 이동해야합니다. (NAME 빵, TYPE 베이커리 NAME 포도 주스, TYPE 음료 NAME 칫솔, TYPE의 세면 용품..) : 이것에

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

NAME - TYPE 

Bread - Bakery 

Rolls - Bakery 

Juice - Beverages 

Soda - Beverages 

:

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

나 : 텍스트 파일의 각 항목에 대해

dBHelper.insert(name, type); 

.

우선이 텍스트 파일을 형식화하는 방법이나 텍스트 파일이이 문제를 해결하는 가장 쉬운 방법이 아닌 경우 데이터베이스에 읽고 삽입 할 수있는 다른 형식의 파일을 알고 싶습니다.

둘째,이 텍스트 파일을 읽고 데이터베이스에 삽입하는 방법은 무엇입니까?

나는 for 루프 내에서 버퍼 된 리더와 inputstream을 사용하여 데이터베이스에 각 항목을 삽입한다고 생각합니다. 각 항목에 데이터베이스에 삽입 할 이름과 유형을 지정하고 텍스트 파일을 형식화하는 방법을 각 행을 구문 분석하는 방법을 모르겠습니다.

외부 파일을 사용하여 내 상황과 관련된 SQL 데이터베이스로 데이터를 가져 오는 것에 대해 거의 알지 못해 도움을 주시면 대단히 감사하겠습니다. 자산 폴더에 저장

default_grocerystore.xml : 다음 onCreate에서 다음

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

이 같은 종류의 내 데이터에 대한 XML 파일을 사용하여 정적 또는 기본 데이터베이스가 내 애플 리케이션에

+0

: 나는이 같은 XML로 채울 내 데이터베이스 테이블을 만들어 내 데이터베이스 클래스에 문자열 [] 토큰 = line.split ("-"); insert (토큰 [0] .trim(), 토큰 [1] .trim()); –

답변

1

위의 형식에서 가면
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

감사합니다. 확실히 올바른 방향으로 나아갔습니다. 이제 listView에서 데이터베이스를 보는 방법을 알아야합니다. 내 DatabaseAdapter에 무엇을 넣을 지 알 수 없습니다. – MattF2288

+0

안녕하세요, 코드를 보았습니다. GroceryObj가 무엇인지 친절하게 물어볼 수 있습니까? 코드를 사용하려고하면 해당 행에서 오류가 발생합니다. 이걸 물어서 미안해. 감사! – ljpv14

+0

GroceryObj는 코드를 만들고 포함시켜야 할 사용자 정의 객체 클래스입니다. – Woodsy