2011-06-22 18 views
0

私はAndroidプログラミングには新人ですが、Javaの経験はいくつかあります。SQLiteにArrayListsを格納するための最善のアプローチ

私が知りたいのは、Android用のSQLiteにArrayListsなどを格納するための最良の方法は何ですか?テーブルに格納するのは私の意見ではOOプログラミングの要点ですが、後で私のアプリケーションをiPhoneに移植したいのでdb4oを使いたくありません。

この場合、どちらのアプローチで使用しますか?非常に単純な例ですが、 "オブジェクト"のArrayListを持つクラス "House"がある場合、それらをどのように格納する必要がありますか。また、シリアライゼーションを使用したくありません。

答えて

1

これは、sqliteデータベースを使用してデータを保存する典型的な例です。基本的にすべてのオブジェクトはテーブル内の単一の行を表します(すべてのプリミティブは列になります)。表を照会し、カーソル・オブジェクトを使用して要素をトラバースします。 arraylistの代わりのデータベースです。

+0

ハウスにはどのオブジェクトの情報をどのように保存する必要がありますか? –

+0

これまでsqlで作業したことがありますか?私は詳細のレベルを知る必要があります。たとえば、データベースのダウンロードSQLite Spyを試してみたい場合は、独自のサンプルデータベースを作成し、構造や操作などを試してみてください。 – DArkO

+0

sqliteデータベースを作成する方法は、メモ帳チュートリアルとメモ帳サンプルコードをご覧ください。あなたのAndroid sdkディレクトリ(サンプル)とhttp://developer.android.com/resources/tutorials/notepad/index.html。私がアンドロイドでお勧めするのは、チュートリアルで説明されているサンプルのコンテンツプロバイダを構築することです。 3つの重要なクラスがあります。テーブルを定義するDBクラス、アクセスを定義してテーブルを作成する(データベースをsqliteヘルパー経由でアップグレードする)ContentProviderクラス、第3にプロバイダのマニフェスト登録 – DArkO

0

Blobの形式でArrayListを保存することができます。ここでは、ArrayListをBlobに変換する方法を示します。

try { 
    ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
    ObjectOutputStream oos = null; 
    oos = new ObjectOutputStream(bos); 

    // mArrayList is the ArrayList you want to store 
    oos.writeObject(mArrayList); 
    byte[] buff = bos.toByteArray(); 

    // You can store the blob in the database 
    Blob blob = new SerialBlob(buff); 
} catch (Exception e){ 
} 

これは、ArrayListがシリアライズ可能な場合にのみ機能します。楽しむ!

+0

提案していただきありがとうございますが、私はデータベースをiOSに移植したいのでブロブを使用したくありません。 –

+0

その場合、最良の方法は、ArrayList内のすべてのデータを取り出し、メインテーブルから参照する別のテーブルを作成することです。 –

関連する問題