2

私はSQLiteデータベースにまったく慣れていないので、外部テキストファイルを使用して初期データベースを作成し、選択して2番目のデータベースに追加できる一連のアイテムを保存するための支援が必要です。これをすべてコンテキストに当てはめるために、食料品店のアイテムのリストを格納する初期データベースが必要です。各アイテムには、NAMEとTYPEの2つの特性があります。そのため、(NAME Bread、TYPEBakery。NAMEGrapeJuice、TYPEBeverage。NAMEToothbrush、TYPE Toiletries。)などのアイテムがあります。

私はこのようなものから行く必要があります:

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

NAME - TYPE

Bread - Bakery

Rolls - Bakery

Juice - Beverages

Soda - Beverages

これに:

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

また:

dBHelper.insert(name, type);

テキストファイルの各項目について。

まず、このテキストファイル、またはテキストファイルがこれを行う最も簡単な方法ではない場合に読み取ってデータベースに挿入できる他の種類のファイルをフォーマットする方法を知りたいと思います。

次に、このテキストファイルを読み取ってデータベースに挿入するにはどうすればよいですか?

forループ内でバッファリングされたリーダーとinputstreamを使用して、各アイテムをデータベースに挿入することを考えています。各行を解析して各アイテムにデータベースに挿入する名前とタイプを指定する方法、および読み取るテキストファイルをフォーマットする方法がわかりません。

外部ファイルを使用して自分の状況に関連するSQLデータベースにデータをインポートすることについてはほとんどわかっていないので、どんな助けでも大歓迎です。

4

1 に答える 1

1

静的またはデフォルトのデータベースを持つアプリでは、次のようなデータの並べ替えに xml ファイルを使用します。

assets フォルダーに保存されている 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;
            }
            }
于 2012-06-04T17:11:49.860 に答える