私は現在SQLiteを研究していますが、挿入や更新にContentValuesなどのさまざまなクラスを使用していることがわかりました...指定された方法に従う必要があるのか、それとも通常のSQLクエリを記述してdb.execSQL()メソッドを使用できるのか疑問に思いました。それらを実行するには?これらのすべての「余分な」ステップではクエリのフローが停止せず、クエリを直接使用した方が高速になると思うので、データベースに不整合が生じますか。
2 に答える
データを返すコマンドまたはその他のSQLコマンド(これに使用)をdb.execSQL
除いて、任意のSQLコマンドを実行できます。使用されるクラスは、DBを簡単に操作できるようにするヘルパークラスです(を使用してそれぞれ20列の100行を挿入してみてください。そうすれば、ポイントが得られます)。小さなテーブルの場合はそれほど違いはありませんが(不整合が発生することはありません)、ユーザーインターフェイスに依存する入力や計算を使用する大きなテーブルの場合は、ヘルパーメソッドを含むContentValuesのようなクラスがあると便利です。select
db.rawQuery()
ContentValues
db.execSQL
はい、あなたは間違いなくこのように使うことができます
myDB.execSQL("INSERT INTO MyTable VALUES ('fffff', 'numb', 20)");
値を挿入しますが、小さなクエリにデータベースを使用している場合に限ります。また、ContentValuesを使用して削除される直接メソッドを使用するいくつかの欠陥があります。たとえば、このメソッドを使用してデータベースにblobを挿入しようとすると、取得したデータをビットマップに変換するときにnullビットマップが取得されます。ただし、ContentValuesを使用して挿入すると、正しいデータを取得します。つまり、それをビットマップに変換できます。