問題タブ [sqliteopenhelper]
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 - 拡張 SQLiteOpenHelper クラスは毎回 onCreate を呼び出しますか?
いくつかの異なるアクティビティで DatabaseHelper オブジェクトを作成しようとしましたが、毎回同じで、onCreate()が起動され、新しいデータベースが作成されます。DDMS ファイル エクスプローラーを確認したところ、確かに、アプリケーションを強制停止しても、データベースは作成後もそこにとどまるため、onCreate を呼び出すことさえできません。何が起きてる?
android - ボタンのクリックで埋め込まれたsqlite macアドレスデータベースアンドロイドを更新する
アプリケーションに MAC アドレスの埋め込みデータベース ファイル (assets ディレクトリにある Macs.db) があります。データベースは、テーブルが 1 つだけの非常に単純な sqlite データベースです。mactoname という名前のテーブルには、1. macaddress、2.name の 2 つの列があります。この埋め込みデータベース ファイルには、事前に読み込まれた MAC アドレスと名前がいくつかあります。ある場所の MAC アドレスを検出するための wifi アナライザー ツールがあります。このアナライザーのコードを以下に示します (marakana.com から)。
今、MACアドレスを検出したので、検出されたMACアドレスをMacs.dbファイルに入れてMacs.dbを更新したいと思います。更新は、次のボタンをクリックして行う必要があります。
MAC アドレスが既に存在する場合は、Macs.db に再度追加されることはありません。macaddress coulmn で検出された新しい MAC アドレスとともに、edittext ビューでユーザーが入力した名前は、Macs.db の mactoname テーブルの名前列でも更新されます。SQLiteOpenHelper クラスの実装があります。新しい MAC アドレスと名前でデータベースを更新するために、このヘルパー クラス内と updatemacdb ボタンの OnClickListener 内で必要なコードは何ですか?
私の SQLiteOpenHelper クラスを以下に示します。このクラスでどのメソッドを変更する必要がありますか?
android - SQLiteOpenHelperを拡張しながら行を削除します
行を削除するメソッドを書いていましたが、理由はわかりません。行を削除できません。これが私のメソッドです。
これはlogcatです:12-13 12:10:57.073:ERROR / AndroidRuntime(327):java.lang.RuntimeException:アクティビティを開始できませんComponentInfo {com.parser / com.parser.parse}:java.lang.IllegalArgumentException :空のbindArgs
私を助けてください!...前に感謝します1
android - ContentProvider で使用される SQLiteOpenHelper で close() を呼び出す必要がある場合
私の Android アプリでは、SQLiteOpenHelper を使用して ContentProvider を実装しています。クエリ、追加、削除操作はすべて ContentProvider を介して行われます。
しかし、私の Android フォン (htc g13) の 1 つで、ディレクトリ /data/data/[パッケージ名]/databases に *.db-wal ファイルが見つかりました。また、ContentProvider を使用すると、ファイル サイズが非常に速く作成されます。ユーザー RAM スペースを占有しすぎました。
私の問題を解決するために SQLiteOpenHelper を閉じることをお勧めします (便利です) 。リンクの説明をここに入力してください。
しかし、SQLiteOpenHelper を直接 (ContentProvider を介して) 使用していないため、「close()」メソッドを追加する「場所」を見つけたいと考えています。ContentProvider の query() メソッドは Cursor を返す必要があり、SQLiteDatabse は開いた状態のままにしておく必要があります。
*.db-wal を維持して ContentProvider を通常どおり使用するために、今何をしているのか混乱しています。
android - アクティビティのライフサイクルとデータベースの混乱
SQLiteOpenHelperのコンストラクターを呼び出してデータベースを開くアクティビティがあります。
次に、ボタンをクリックすると、別のアクティビティを開いてdbHelperを閉じます。
戻るボタンを押すと、このアクティビティに戻ります。検索ボタンをもう一度クリックしようとすると、dbHelperが使用され、通常どおりエラーなしで機能します。私の期待は、dbHelperがすでに閉じられているため機能しないはずであり、アクティビティonCreate()メソッドが呼び出された場合にのみ再インスタンス化できますが、この場合は戻るボタンを押すだけなので呼び出されません(呼び出す必要があります) onResume())。私は本当に混乱しています。ここで何が起こっているのか、どんな体でも説明できますか?
編集:これは私がdbHelper.close()を実装した方法です
android - データベースから取得するときの Nullpointer Exception もカーソル
編集 4: ハイスコアを保存するために使用しようとしているゲームがあります。メイン メニューから、ViewHighscores アクティビティを呼び出す [View Highscore] ボタンを押します。ここから、アクティビティは現在保存されているすべてのスコアを表示しようとします。データベースが空であり、onCreate に到達しないと考えているようですが、理由はわかりません
これは、データベースにも書き込もうとするゲーム自体のコードです。getUserName(); editText から userName を取得し、numberOfGuesses は 1 から 12 までの数値です
ここに DatabaseOpenHelper クラスがあります
ViewHighscores アクティビティを開いた場合の Logcat は次のとおりです。
android - SQLite で間違ったデータがデータベースに入れられる
編集 <<<<<<<<<
以下から取得した userName が null として戻ってくることを発見しました。理由を教えてください。
のようなものを表示します
[正しいスコア] は、それが持つべき出力です
userName が保存されず、代わりに null に置き換えられるのはなぜですか?
編集 1: 二重保存の問題を修正 - 現在は NULL 値のみ
java - ランタイムエラーなしでResources.getSystem()を使用できないのはなぜですか?
このエラーが発生します
01-14 12:20:57.591:E / AndroidRuntime(1825):原因:android.content.res.Resources $ NotFoundException:文字列リソースID#0x7f040003
エラーの原因となるコードは、createProfileTable内の1行です。具体的には、クラス変数を使用してContextを保持し、context.getString(R.string.create_profile_table_sql)を実行する場合、 Resources.getSystem()。getString(R.string.create_profile_table_sql)です。エラーは発生しませんが、メモリリークを回避したいので、エラーは発生しません。これは、動作するはずです。何が起こっているのか分かりますか?
java - SQLiteDatabase Android のアップグレード
SQLite を使用するアプリケーションを作成しています。最初、私のデータベースには という名前のテーブルが 1 つしかありませんでしproducts
た。という名前のテーブルをもう 1 つ追加しますfavouriteproduct_table
。db.exec("create table fav_product")
メソッドにコマンドを書きましたonCreate
が、 のテーブルが見つからないと言ってアプリがクラッシュしますProduct_fav
。
これは、favorite_product_table を追加する前の私のコードです。
上記のコードは正常に動作していますが、次のコードを使用して新しいテーブルを作成しようとすると、アプリがクラッシュします。
android - Androidで、SqliteDatabaseのquery()メソッドを使用したwhere句での2列の値の合計操作に基づく条件の使用方法
SqliteDataBaseのquery()メソッドを使用してAndroidでクエリを実行する必要があります。2列の結合条件に依存する行を取得する必要があります。
私は次のコードを試しました:
クエリは正常に実行されましたが、where条件で指定された「AND」条件に従って結果をフェッチしていません。そのAND条件(colB + colC * 100> =?)を見ていません。
プレースホルダー(?)を「values」変数で指定された正確な値に置き換えた場合、正常に機能しています。また、rawQuery()を使用すると、結果が得られます。
しかし、私の要件は同じメソッド(query())を使用することです。
誰かがそのwhere条件をうまく使う方法を教えてもらえますか?
ありがとう