3

明らかに、私は Android の ContentValues の概念を理解していませんでした。database.insert(TABLE, null, contentValues); のような挿入ステートメントがどのように保証されるのですか? ContentValues はセットであるため、contentValues のすべての値を正しい順序で取得しますか?

TABLE に 3 つの文字列列があるとします。以下のように書くと・・・

contentValues.put("col1", valueCol1);
contentValues.put("col2", valueCol2);
contentValues.put("col3", valueCol3);

... database.insert が値をこの順序で挿入することは保証されていません。

db.execSQL の代わりに database.insert を使用する利点は何ですか (Android でのビュー処理の改善を除く)?

4

1 に答える 1

2

ContentValues はセットなので?

ContentValuesにはるかによく似ていMapます。これは、文字列をキーとするキー値ストアです。

database.insert が値をこの順序で挿入することは保証されていません。

はこれらのINSERT値を同時に挿入INSERTします。これは、SQL 準拠のデータベースで過去数十年間ステートメントが機能してきた方法です。

あなたの例を使用するには、insert()それContentValuesを という名前のテーブルに入れるとfoo、結果は次のようになります。

db.execSQL("INSERT INTO foo (col3, col1, col2) VALUES (?, ?, ?)", args);

ここで、argsはそれぞれ、、およびでString[]構成されます。valueCol3valueCol1valueCol2

db.execSQL の代わりに database.insert を使用する利点は何ですか?

入力が少し少なくなり、値をString配列に変換する必要がなくなります。

(Android でのより良いビュー処理を除く)?

私見、insert()onはonSQLiteDatabaseよりも「より良いビュー処理」を提供しませんが、おそらく私が見逃していることを考えているでしょう。execSQL()SQLiteDatabase

于 2013-05-11T16:41:45.723 に答える