0

質問はすでにされていますが、同様の問題が見つかりません。

クラスする必要があります:

public class Categorie {

// Attributs
private int identifiant;
private String libelle;

...
}

public class Restaurant {

// Attributs
private int identifiant;
private String nom;
private String description;
private List<Categorie> lesCategories;

...
}

しかし、SQLiteでは、" " をどのように使用するのかわかりませんlesCategories..

私はフランス語でこのチュートリアルを読みました:

SQLite では、オブジェクトtypeは存在しません。String, Integer, Real, Blob.

より明確にするために:ここにあるカーソルに問題があります-> "????":
なぜなら、それは文字列でも整数でもオブジェクトではありません..

public Restaurant ConvertCursorToObject(Cursor c) { Restaurant restaurant= new Restaurant ( c.getInt(EnseigneOpenHelper.NUM_RES_ID), c.getString(EnseigneOpenHelper.NUM_RES_NOM), c.getString(EnseigneOpenHelper.NUM_RES_DESCRIPtion), ????
); return restaurant; }

/** * Restaurant でカーソルを変換します */

public Restaurant ConvertCursorToOneObject(Cursor c) { c.moveToFirst(); Restaurant restaurant = ConvertCursorToObject(c); c.close(); return restaurant ; }

4

1 に答える 1

3

あなたが求めている (ではない) 質問は、これら 2 つのクラスに含まれる情報をリレーショナル データベースに保存する方法だと思います。

オブジェクトを SQL データベースに保存することはできません (BLOB でない限り)。データを正規化する必要があります。

ここで必要なのは、次の 3 つのテーブルです。

  1. と呼ばれる最初のテーブルCategorie;
  2. と呼ばれる 2 番目のテーブルRestaurant
  3. と呼ばれる 3 番目のテーブルRestaurantCategorie

3 番目のテーブルには、 と の 2 つのフィールドのみが含まれcategorie_idますrestaurant_id。各行には、レストランとカテゴリの有効な組み合わせが表示されます。そのテーブルには、プロパティに対応する値が含まれますlesCategories

関連する SQL の例を次に示します。

CREATE TABLE Categorie
( categorie_id  INTEGER PRIMARY KEY
, libelle       TEXT    NOT NULL
);

CREATE TABLE Restaurant
( restaurant_id INTEGER PRIMARY KEY
, nom           TEXT    NOT NULL
, description   TEXT
);

CREATE TABLE RestaurantCategorie
( restaurant_id INTEGER NOT NULL    REFERENCES Restaurant
, categorie_id  INTEGER NOT NULL    REFERENCES Categorie
, PRIMARY KEY (restaurant_id, categorie_id)
);

その理由を理解したい場合は、リレーショナル データベースの設計、データ モデリング、そして特にデータベースの正規化に関するトピックを読む必要があります(最も注目すべきは例です)。

StackOverflow でこれを見つけることができなかった理由は、おそらく、これが SQL データベースを操作する際の非常に基本的なものだからです。

于 2013-02-07T11:16:04.223 に答える