私はAndroidにSQLiteデータベースを持つプロジェクトを持っています。行を保存する、テーブルからすべての行を読み込む、行を削除するなど、いくつかの操作を実行したいと思います。他のスレッドでその操作を実行したいです。私の質問は、どのマルチタスキング方法を使用すべきですか?私は、上記で書いた操作を表すいくつかのメソッドを持っている、データベース・マネージャーのようなクラスについて考えていました。私はそれをいかに簡単かつ簡単にするか考えていません。たぶんサービスは私にこの仕事を手伝ってくれるかもしれません。あるいは、ある操作で別のクラスを使うべきでしょうか?例えば、1つの操作のための1つのAsyncTaskクラス?あなたの答えとアドバイスのすべてを待っています。ありがとう!別のスレッドでSQLite操作を実行する
-1
A
答えて
1
私は、バックグラウンドサービスは単純なデータベース操作のために少し過度のものだと思います。
ほとんどの場合、スクロールするのに必要なリストタイプのデータには、Cursor Adapterのリストビューを使用します。小さなデータセットの場合は、おそらく< 10行ですが、UIスレッドでデータを取得するだけです。
複雑な操作の場合、起動時にDBの状態を確認したり、行のセットを削除したりすると、目的ごとにAsyncTaskを作成します。
私は今AndroidのSQL Liteプロジェクトの中で、しばらくの間、ORM Liteを使っています。私は単なるDatabaseManagerの規約に従い、カスタムクエリを必要とするマネージャクラス内のメソッドを作成します。
0
あなたは、あなたの活動にこれを追加し、テーブルなどに内容に
を追加するように必要なすべての操作を行うことができますthis.InそのdoInBackground()メソッドのためのAsyncTaskを使用することができます。
private class myTask extends AsyncTask<Void, Void, Bitmap> {
DataBaseHelper db=new DataBaseHelper(context);
protected void doInBackground(Void... params) {
db.addData(.....);
}
}
そして、以下はDataBaseHelperクラスです。
public class DataBaseHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
// Database Name
public static final String DATABASE_NAME = "YourName.db";
// table name
public static final String TABLE_DATA = "your Table name";
// Table Columns names
public static final String KEY_ID = "id";
public static final String KEY_NAME = "DataName";
public static final String KEY_CONTENT = "Content";
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_TABLE_DATA = "CREATE TABLE " + TABLE_DATA + "("
+ KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_NAME + " TEXT,"
+ KEY_CONTENT + " TEXT" + ")";
db.execSQL(CREATE_TABLE_DATA);
public void addData(DataBaseModel dataBaseModel) {
SQLiteDatabase db1 = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_NAME, dataBaseModel.getDataName()); // Contact Name
values.put(KEY_CONTENT, dataBaseModel.getContent()); // Contact Phone
// Inserting Row
db1.insert(TABLE_DATA, null, values);
//Toast.makeText(context, "New row added, row id: " , Toast.LENGTH_SHORT).show();
db1.close(); // Closing database connection
}
// Getting single data
public String getData(String dataName) {
String data=null;
SQLiteDatabase db = this.getReadableDatabase();
//SQLiteDatabase db2=SQLiteDatabase.openDatabase(DB_PATH + DATABASE_NAME, null, SQLiteDatabase.CREATE_IF_NECESSARY);
Cursor cursor = db.query(TABLE_DATA, new String[]{KEY_ID,
KEY_NAME, KEY_CONTENT}, KEY_NAME + "=?",
new String[]{dataName}, null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
try {
data = cursor.getString(cursor.getColumnIndex(KEY_CONTENT));
}catch (Exception e){
e.printStackTrace();
data=null;
}
cursor.close();
return data;
}
関連する問題
- 1. サービススレッドとは別のスレッドでサービス操作を実行
- 2. sqliteで相関クエリ操作を実行する方法
- 3. 別の作業ディレクトリからGit操作を実行する
- 4. 別のループを作成して並列スレッドで実行する
- 5. 別のスレッドでクラス操作を開始する
- 6. Outlookを追加しないで別のスレッドで別のスレッドを実行する
- 7. 別のスレッドでスレッドを実行できますか?
- 8. 別のスレッドでフォームを実行中
- 9. SQLiteデータベースの操作
- 10. Poco:別のスレッドからブロッキングソケット操作を中止する方法
- 11. 別のスレッド内からUI要素を操作する
- 12. は複数の実行スレッドで同時に操作を開始します
- 13. 別のスレッドに、操作が実行中または終了していることを通知します。
- 14. パンダのデータフレームのどこで個別のカウント操作を実行するには?
- 15. 大規模なSQLite DBをクエリすると、別のスレッドで実行されてもUIがフリーズする
- 16. 長時間実行中のエクスプレスAPIプロセスを別のスレッドで実行するNodeJs
- 17. ファイルコピー操作が別のスレッドで機能しませんか?
- 18. 別のスレッドで同期すると、sqliteで同時実行性の問題が発生しますか?
- 19. 操作の実行(R)
- 20. スウィフト "実行ブロック操作" で、次のブロックの操作
- 21. アンドロイドサービスの別のスレッドで位置更新を実行する
- 22. Node.js - 別のスレッドでスクリプトの実行を一時停止する
- 23. System.Threading.Thread - 操作を実行する
- 24. 長時間実行する操作を実行するには?
- 25. ExpandableListView/SimpleCursorTreeAdapterを使用してUIスレッドでSQLiteクエリを実行
- 26. 別のスレッドでメンバー関数を実行する
- 27. 別のスレッドでカスタムアペンダーを実行する方法
- 28. Qtで別のプロセスやスレッドを実行する
- 29. 別のサーバー/ JVM上でJavaスレッドを実行する
- 30. VB.Net別のスレッドでタスクを実行する