問題タブ [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.

0 投票する
1 に答える
2965 参照

android - selection と selectionArgs[] を使用した Android CursorLoader

アイテムをリストするためにLoaderforを使用しています。RecyclerView.Adapterデータベース テーブルから特定のアイテムを一覧表示したい。だから私はした:

通常、私は and に与えますnull,nullselectionselectionArgsここでは、特定のIDs. 新しいアイテムがテーブルに追加され、それをリストしたいときに問題が発生します。cursor私が戻ってきたのは、私が3つの特定のアイテムを与えたので、新しいアイテムを認識していないため、それらの3つのアイテムに変更があったときに検出するだけです.

新しく追加された商品がありID、私も出品したいのですが、どのように出品すればよいですか?データベースからすべてのアイテムを射影しRecyclerView.Adapter、フィルターIDsする必要がありますonBindViewHolder()か?

0 投票する
3 に答える
131 参照

android - オブジェクトを 1 つのフラグメントで DB に追加し、別のフラグメントで listView を更新する

3 つのフラグメントを含むアクティビティがあり、fragCurrencyExchange のデータベースにオブジェクトを追加するときに、DB から fragExchangeHistory listView を更新する必要があります。どうすればできますか?

コード: GitHub

0 投票する
6 に答える
6325 参照

android - ストアで Android アプリの新しいバージョンをリリースするときに SQLite データベースを更新する

Android アプリで sqlite を使用しています。データベース ファイルの名前は data.db です。2 つのテーブルがあり、1 つは静的な値 (読み取り専用) で、もう 1 つは動的な値を保存し、アプリを playStore にプッシュしたとします。

次のバージョンでは、data.db を更新し、最初のテーブルの値を更新し、2 番目のテーブルに新しい列を追加し、3 番目の新しいテーブルを追加して、アプリを PlayStore にプッシュしました。ユーザーがアプリを更新しているかどうかを確認する方法と、既存のデータを保存するための最良の方法と、新規インストールではなく更新である場合にプログラムで data.db を更新する方法を教えてください。

0 投票する
1 に答える
211 参照

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

0 投票する
0 に答える
168 参照

android - SQLiteDatabase と Cursor のリークと close() 呼び出し

データベースとカーソルの管理について助けが必要です。特定のフラグメントに入ったり出たりすると、次のようになることに気付きました。

W/SQLiteConnectionPool﹕ データベース '+data+data+database' の SQLiteConnection オブジェクトがリークされました! 進行中のトランザクションを適切に終了し、不要になったデータベースを閉じるようにアプリケーションを修正してください。

そのため、私はゼロから戻って、自分がいつ何をしているのかを確認するようになりました。私は持っている:

  • db を作成および更新するためのいくつかのメソッドのみを含むDatabaseHelperクラスを拡張します。SQLiteOpenHelper
  • 何も拡張しないDatabaseManagerクラス。DatabaseHelperオブジェクトへの単一の参照を保持するために、特にこれを使用します。

    /li>
  • Cursorこのクラスでは、データベースにクエリを実行してオブジェクトを返すいくつかのメソッド。

  • このクラスでは、closeConnection()私がよくわからないメソッドです。

このクラスをフラグメントから使用し、毎回 を呼び出しますnew DatabaseManager(getActivity())。これにより、新しいヘルパー参照が作成されません。今、私は:

  • Cursor.close()クエリから必要な情報を取得したらすぐに呼び出します。
  • open()SQLiteDatabase でもヘルパーを呼び出さないでください。正確にはいつですか?呼び出さなくてもすべて機能するのはなぜですか?
  • 私のデータベースを利用するフラグメントmanager.closeConnection()のメソッドを呼び出します。onStop()ご覧のとおり、これは close h(ヘルパー クラスへの参照) と読み取り可能なSQLiteDatabaseオブジェクトに対して呼び出します。hただし、ヘルパー参照をnullにせずに閉じるため、それについてはよくわかりませんnew DatabaseManager()。おそらく、シングルトン パターンでデータベースを処理するために呼び出す必要はありませんh.close()か?

それとは別に、言うまでもなく(それが私が尋ねている理由です)、フラグメントを切り替えると、上記の警告が表示されます。どうしたの?私は何をすべきか?とはend transactions in progressどういう意味ですか? メソッドを変更するかcloseConnection()、別のライフサイクル タイムで呼び出すか、またはまったく呼び出さないようにする必要がありますか?


@Selvin が指摘した恥ずかしい問題の後、h静的にしました。への呼び出しを削除するとcloseConnection()、すべて正常に機能し、警告は表示されません。つまり、どちらも呼び出していないことh.close()を意味しますまたはdb.close(). それは大丈夫ですか?そうでない場合、いつ呼び出す必要がありますか?