0

私はオンラインで検索し、Android コードの本をいくつか見て、矛盾する情報を見つけました。

The Android Developer's Cookbook では、著者は MyDB.java、MyDBhelper.java、および Constants.java の 3 つのクラスについて説明しています。

  • MyDB.java は、DB のオープンとクローズ、および DB の挿入とクエリに使用されます (更新、行の削除などもこのクラスに入れると思います)。
  • MyDBhelper.java (SQLiteHelper を拡張) は onCreate() および onUpdate() メソッドに使用されます。DB のテーブルは onCreate() で作成されます。
  • Constants.java は、MyDB.java と MyDBhelper.java の両方で使用される定数を定義するために使用されます。

オンラインで、MyDB.java の概念を使用していない例をいくつか見つけました (必要に応じてリンクできます)。これらの例には、 MyDBhelper.java クラスのすべてが含まれています。

ある方法は他の方法よりも優れていますか? データ操作/クエリ クラスとは別のクラスに onCreate メソッドと onUpdate メソッドを保持する理由はありますか? どちらも機能することは理解していますが、より広く受け入れられているアプローチを探しています。

4

1 に答える 1

0

一般的な概念は、UI ロジックをデータベース ロジックから分離し、DB の詳細と UI の間の MyDB クラス インターフェイスを分離することだと思います。

UI はデータを Java コンストラクト (コレクション、文字列など) として扱いたいと思うでしょう。MyDBhelper は実際のすべての IO を実行し、データを DB から Cursors に読み込みます。MyDB クラスは仲介者として機能し、Cursor データを通常の Java コンストラクトに変換します。

例:

アクティビティで:

ArrayList(Customer> ac = MyDBhelper.getCustomers();

MyDB で:

Cursor c = MyDBhelper.getCustomers();
ArrayList<Customer> customers = new ArrayList<Customer>();
// For each row in the returned Cursor, create a Customer object, and add it to an ArrayList<Customer> collection.
// return the ArrayList to the UI
return customers;

MyDBhelper は、必要な SQLite クエリ文字列を作成して必要なデータを取得し、SQLite データベースを呼び出してデータを Cursor に読み込みます。Cursor を MyDB に返します。

于 2013-10-31T01:07:57.550 に答える