2011-02-18 21 views
0

私はAndroidが初めてです。私は列の1つの値としてデータベース(SQLite)にarraylistまたはvectorを格納する必要があります。私はarraylistまたはvectorの格納に関して検索しました。その中で、arraylistをJSONに変換することを提案しました。 arraylistをJSONに変換する以外に、この問題の解決策がありますか?私にこの問題に関する解決策や記事を教えてください。アンドロイドのSQLiteデータベースにarraylistやvectorを挿入するには?

非常に緊急です。私を助けてください。

答えて

1

ベクターおよびリストのファイル名を維持するには、データ構造です。 SQLiteカラムは、原子値、つまり数値、文字列、ブロブだけを受け入れます。

は、したがって、あなたは、単一の文字列またはBLOBへのベクター/リストをシリアル化(変換)する必要があります - 数字はとにかく行うことはありません。一意に可逆なエンコーディングを使用する必要があり、データ構造の特別なプロパティを保持します。

確かに、ホイールを作り直して独自のエンコーディングを使用することができます。または、Java Serialization APIを使用してホイールを半改革することもできます。あるいは、もっと試したソリューションであるJSONのようなものを使うこともできます。

私があなただったら、まずデータベーススキーマを変更することを検討します。リストとベクトルは、直列化技法なしでデータベースに格納できるリレーショナル・モデルに十分近いものです。

EDIT:

this questionthis oneを参照してください。そのため、アプリケーションやユースケースに応じて、

+0

おかげで... – deepa

+0

ブロブは、アプリケーションの多くのために...あなたは、ストレージ&検索の速度の大きさを気にしている場合に移動するための方法でありますこれは正しい選択です。 –

+0

@ErikAronesty:データ構造内の特定の要素*に対処する必要がない限り、真です。毎回2つの要素を取得するだけで、1,000,000要素のリストを繰り返し取得することは、非常に効率的ではありません。 – thkala

0

どのようにメモリオブジェクトをdbに保存できますか? :)文字列にシリアル化する必要があります。あなたが何を使用するかにかかわらず。 xml、json、独自のtoStringメソッド。オブジェクトのシリアライズとデシリアライズが容易なものを選択するだけです。 JSONを使用すると、文字列のArrayListのか、ベクトルを持っている場合、まず

1

良いアイデアのようです。その後、単純にそれをトラバースし、それぞれの文字列を格納し、アプリケーション・ロジックによって管理します。

それは単に任意のファイル上のArrayListオブジェクトをシリアル化、その後の文字列を持っていない場合。 データベースに

0

私は(1対多または多対多の関係で)あなたのArrayListのデータのためのデータベースで別のテーブルを作成し、個別にそれらを照会します。

はい、これは非常にために是正することが困難であるよりエレガントな;-)

の話をしない(それはほとんど間違いなくあなたのアプリケーションにいくつかの複雑さを加えるだろうが、それは、より堅牢でフォールトトレラントな解決策になります重複したArrayListの項目が発生しない、単純なユースケース...あなたの迅速な応答先生のための

関連する問題