Androidで個人的に推奨されるデータベースの使い方
4587 ワード
携帯電話のアプリケーション開発では、データベースにいくつかの資料を格納したり、データキャッシュを行ったりするのによく使われています.androidでは、軽量のデータベースを提供してくれました.上層部にカプセル化され、ContentProviderのフレームワークを提供してくれました.データ操作や、異なるプログラム間でデータ共有を行うのに便利です.本文は紹介して、私はデータベースのいくつかの私の比較的に良い習慣を使って、私と討論することを歓迎します.
フレームワークについて
通常、ネットワーク操作、Json解析、私はフレームワークを使用して、このように私が異常を処理することを助けることができて、非同期操作を処理します.しかし、データベース操作は私が持っているSQLiteHelperとContentProviderを使用して、androidシステムがSQLite上で私たちに提供してくれたパッケージを使用します.したがって、サードパーティのSQLiteフレームワークは使用しません.SQLiteDatabaseとContentProviderは私たちに関数を提供してくれます.
androidが提供してくれた操作はすでにカプセル化されており、他のORMフレームワークと似ているところが多いことがわかります.またandroidでは、非常に複雑なデータ構造を格納することはなく、自分の学習フレームワークにコストを増やす必要はありません.
データベースライブラリのアップグレードなどの原則
まずコードを見てみましょう
以上のコードはandroidのDownloadProviderから抜粋したDatabaseHelperコードです.私はここで主にこのようなデータベースの建表をお勧めします.最初にこの建表方式に触れたのは、以前DownloadManagerを読んだとき、androidの中でこのような設計が本当に素晴らしいことに気づきました.この方法では、データベースのアップグレードが容易になり、updateデータベースとcreateデータベースの場合、テーブルを共有し、データテーブルのコードを変更し、データベースの変化を明確に見ることができます.
また、データベースのバージョンを変更するときは、バージョン番号にコメントを追加し、データベースのアップグレードの内容を書くことで、後でデータベースの変化を見たり、他の人がコードを見たりして、データベースの変化を知ることができるようにすることをお勧めします.
データベース構築テーブルとデータストレージの推奨事項
簡単なプロファイルの中には、データベースに保存することを推奨せず、sharepreferenceに保存することで、アクセスが容易になり、アクセス速度も向上します.
ファイル、画像などは絶対にデータベースに保存しないで、ファイルのパスをデータベースに保存すればいいです.
いくつかの複雑なデータは、直接jsonに移行してデータベースに保存することをお勧めします.一部のキャッシュは、このように格納することもできます.
他に言いたいことは
データベース操作の場合、プライマリ・スレッドで操作しないでください.これは時間のかかる操作であり、ANRを生じやすい.
データベース内のデータ表示を行う場合は、androidが提供する非同期データロードであり、データが変化すると自動的にデータが再リフレッシュされるCursorLoaderと組み合わせて使用することをお勧めします.
その他、本文、私はでたらめを言います.異議があれば、討論に返事してください.
原文住所:http://blog.isming.me/2014/10/13/good-database-use/、転載は出典を明記してください.
フレームワークについて
通常、ネットワーク操作、Json解析、私はフレームワークを使用して、このように私が異常を処理することを助けることができて、非同期操作を処理します.しかし、データベース操作は私が持っているSQLiteHelperとContentProviderを使用して、androidシステムがSQLite上で私たちに提供してくれたパッケージを使用します.したがって、サードパーティのSQLiteフレームワークは使用しません.SQLiteDatabaseとContentProviderは私たちに関数を提供してくれます.
query() //
insert() //
delete() //
update() //
//
androidが提供してくれた操作はすでにカプセル化されており、他のORMフレームワークと似ているところが多いことがわかります.またandroidでは、非常に複雑なデータ構造を格納することはなく、自分の学習フレームワークにコストを増やす必要はありません.
データベースライブラリのアップグレードなどの原則
まずコードを見てみましょう
private final class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(final Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
/**
* 1-->2 add header table
* 2-->3 update info
* 3--> update info haha
*
*/
public static final int DB_VERSION = 4;
public static final String DB_NAME = "download";
/**
* Creates database the first time we try to open it.
*/
@Override
public void onCreate(final SQLiteDatabase db) {
if (Constants.LOGVV) {
Log.v(Constants.TAG, "populating new database");
}
onUpgrade(db, 0, DB_VERSION);
}
/**
* Updates the database format when a content provider is used
* with a database that was created with a different format.
*
* Note: to support downgrades, creating a table should always drop it first if it already
* exists.
*/
@Override
public void onUpgrade(final SQLiteDatabase db, int oldV, final int newV) {
for (int version = oldV + 1; version <= newV; version++) {
upgradeTo(db, version);
}
}
/**
* Upgrade database from (version - 1) to version.
*/
private void upgradeTo(SQLiteDatabase db, int version) {
switch (version) {
case 1:
createDownloadsTable(db);
break;
case 2:
createHeadersTable(db);
break;
case 3:
addColumn(db, DB_TABLE, Downloads.Impl.COLUMN_IS_PUBLIC_API,
"INTEGER NOT NULL DEFAULT 0");
addColumn(db, DB_TABLE, Downloads.Impl.COLUMN_ALLOW_ROAMING,
"INTEGER NOT NULL DEFAULT 0");
addColumn(db, DB_TABLE, Downloads.Impl.COLUMN_ALLOWED_NETWORK_TYPES,
"INTEGER NOT NULL DEFAULT 0");
break;
case 103:
addColumn(db, DB_TABLE, Downloads.Impl.COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI,
"INTEGER NOT NULL DEFAULT 1");
makeCacheDownloadsInvisible(db);
break;
case 4:
addColumn(db, DB_TABLE, Downloads.Impl.COLUMN_BYPASS_RECOMMENDED_SIZE_LIMIT,
"INTEGER NOT NULL DEFAULT 0");
break;
default:
throw new IllegalStateException("Don't know how to upgrade to " + version);
}
}
以上のコードはandroidのDownloadProviderから抜粋したDatabaseHelperコードです.私はここで主にこのようなデータベースの建表をお勧めします.最初にこの建表方式に触れたのは、以前DownloadManagerを読んだとき、androidの中でこのような設計が本当に素晴らしいことに気づきました.この方法では、データベースのアップグレードが容易になり、updateデータベースとcreateデータベースの場合、テーブルを共有し、データテーブルのコードを変更し、データベースの変化を明確に見ることができます.
また、データベースのバージョンを変更するときは、バージョン番号にコメントを追加し、データベースのアップグレードの内容を書くことで、後でデータベースの変化を見たり、他の人がコードを見たりして、データベースの変化を知ることができるようにすることをお勧めします.
データベース構築テーブルとデータストレージの推奨事項
簡単なプロファイルの中には、データベースに保存することを推奨せず、sharepreferenceに保存することで、アクセスが容易になり、アクセス速度も向上します.
ファイル、画像などは絶対にデータベースに保存しないで、ファイルのパスをデータベースに保存すればいいです.
いくつかの複雑なデータは、直接jsonに移行してデータベースに保存することをお勧めします.一部のキャッシュは、このように格納することもできます.
他に言いたいことは
データベース操作の場合、プライマリ・スレッドで操作しないでください.これは時間のかかる操作であり、ANRを生じやすい.
データベース内のデータ表示を行う場合は、androidが提供する非同期データロードであり、データが変化すると自動的にデータが再リフレッシュされるCursorLoaderと組み合わせて使用することをお勧めします.
その他、本文、私はでたらめを言います.異議があれば、討論に返事してください.
原文住所:http://blog.isming.me/2014/10/13/good-database-use/、転載は出典を明記してください.