問題タブ [android-database]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - selection と selectionArgs[] を使用した Android CursorLoader
アイテムをリストするためにLoader
forを使用しています。RecyclerView.Adapter
データベース テーブルから特定のアイテムを一覧表示したい。だから私はした:
通常、私は and に与えますnull,null
がselection
、selectionArgs
ここでは、特定のIDs
. 新しいアイテムがテーブルに追加され、それをリストしたいときに問題が発生します。cursor
私が戻ってきたのは、私が3つの特定のアイテムを与えたので、新しいアイテムを認識していないため、それらの3つのアイテムに変更があったときに検出するだけです.
新しく追加された商品がありID
、私も出品したいのですが、どのように出品すればよいですか?データベースからすべてのアイテムを射影しRecyclerView.Adapter
、フィルターIDs
する必要がありますonBindViewHolder()
か?
android - オブジェクトを 1 つのフラグメントで DB に追加し、別のフラグメントで listView を更新する
3 つのフラグメントを含むアクティビティがあり、fragCurrencyExchange のデータベースにオブジェクトを追加するときに、DB から fragExchangeHistory listView を更新する必要があります。どうすればできますか?
コード: GitHub
android - ストアで Android アプリの新しいバージョンをリリースするときに SQLite データベースを更新する
Android アプリで sqlite を使用しています。データベース ファイルの名前は data.db です。2 つのテーブルがあり、1 つは静的な値 (読み取り専用) で、もう 1 つは動的な値を保存し、アプリを playStore にプッシュしたとします。
次のバージョンでは、data.db を更新し、最初のテーブルの値を更新し、2 番目のテーブルに新しい列を追加し、3 番目の新しいテーブルを追加して、アプリを PlayStore にプッシュしました。ユーザーがアプリを更新しているかどうかを確認する方法と、既存のデータを保存するための最良の方法と、新規インストールではなく更新である場合にプログラムで data.db を更新する方法を教えてください。
android - データベースを開いてクエリを実行できません
強いテキスト
データベースを開いてクエリを実行できません。インテント値を使用して別のJavaファイルから渡されたテーブルの行にアクセスしたい。助けてください !
ログキャット
performCreate(Activity.java:5117) 04-04 11:52:12.400: E/AndroidRuntime(26824): android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081) 04-04 11:52:12.400: E/ AndroidRuntime(26824): android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2150) 04-04 11:52:12.400: E/AndroidRuntime(26824): ... 11 04-04 11:52:14.922: I/Process(26824): シグナルを送信しています。PID: 26824 SIG: 9
android - SQLiteDatabase と Cursor のリークと close() 呼び出し
データベースとカーソルの管理について助けが必要です。特定のフラグメントに入ったり出たりすると、次のようになることに気付きました。
W/SQLiteConnectionPool﹕ データベース '+data+data+database' の SQLiteConnection オブジェクトがリークされました! 進行中のトランザクションを適切に終了し、不要になったデータベースを閉じるようにアプリケーションを修正してください。
そのため、私はゼロから戻って、自分がいつ何をしているのかを確認するようになりました。私は持っている:
- db を作成および更新するためのいくつかのメソッドのみを含む
DatabaseHelper
クラスを拡張します。SQLiteOpenHelper
何も拡張しない
/li>DatabaseManager
クラス。DatabaseHelper
オブジェクトへの単一の参照を保持するために、特にこれを使用します。Cursor
このクラスでは、データベースにクエリを実行してオブジェクトを返すいくつかのメソッド。このクラスでは、
closeConnection()
私がよくわからないメソッドです。
このクラスをフラグメントから使用し、毎回 を呼び出しますnew DatabaseManager(getActivity())
。これにより、新しいヘルパー参照が作成されません。今、私は:
Cursor.close()
クエリから必要な情報を取得したらすぐに呼び出します。open()
SQLiteDatabase でもヘルパーを呼び出さないでください。正確にはいつですか?呼び出さなくてもすべて機能するのはなぜですか?- 私のデータベースを利用するフラグメント
manager.closeConnection()
のメソッドを呼び出します。onStop()
ご覧のとおり、これは closeh
(ヘルパー クラスへの参照) と読み取り可能なSQLiteDatabase
オブジェクトに対して呼び出します。h
ただし、ヘルパー参照をnullにせずに閉じるため、それについてはよくわかりませんnew DatabaseManager()
。おそらく、シングルトン パターンでデータベースを処理するために呼び出す必要はありませんh.close()
か?
それとは別に、言うまでもなく(それが私が尋ねている理由です)、フラグメントを切り替えると、上記の警告が表示されます。どうしたの?私は何をすべきか?とはend transactions in progress
どういう意味ですか? メソッドを変更するかcloseConnection()
、別のライフサイクル タイムで呼び出すか、またはまったく呼び出さないようにする必要がありますか?
@Selvin が指摘した恥ずかしい問題の後、h
静的にしました。への呼び出しを削除するとcloseConnection()
、すべて正常に機能し、警告は表示されません。つまり、どちらも呼び出していないことh.close()
を意味しますまたはdb.close()
. それは大丈夫ですか?そうでない場合、いつ呼び出す必要がありますか?