我想知道使用ContentValues插入數據和在SQLlite(Android)中使用Raw SQL插入數據之間的區別,使用內容值有沒有優勢?在SQLite Android中使用ContentValues和Raw SQL插入數據有什麼區別?
回答
執行插入,讀取,刪除,更新操作有兩種不同的方式:
- 寫參數化查詢(推薦)
- 寫入原始查詢
參數化查詢:這些是那些使用內置函數執行插入,讀取,刪除或更新數據的查詢。這些操作相關的功能在SQLiteDatabase
類中提供。
原始查詢:這些都是簡單的SQL查詢類似於其他的數據庫如MySQL,SQL服務器等,在這種情況下,用戶將不得不編寫查詢文本,並通過查詢字符串中rawQuery(String sql,String [] selectionArgs)
或execSQL(String sql,Object [] bindArgs)
方法來執行操作。
重要提示:Android文檔不建議使用原始的查詢執行插入,讀取,更新,刪除等操作,始終使用SQLiteDatabase
類的插入,查詢,更新,刪除等功能。
以下是插入原始查詢的示例數據:
public void insertItem(Item item) {
String query = "INSERT INTO " + ItemTable.NAME + " VALUES (0,?,?)";
SQLiteDatabase db = getWritableDatabase();
db.execSQL(query, new String[]{item.name, item.description});
db.close();
}
雖然使用原始的查詢,我們永遠不會知道操作的結果,但與參數化查詢功能是返回一個值的成功或失敗操作。
插入:要使用parameterized query
執行插入操作,我們必須調用SQLiteDatabase類中可用的插入函數。 insert()
函數有三個參數,如public long insert(String tableName,String nullColumnHack,ContentValues values)
其中tableName
是要在其中插入數據的表的名稱。
下面是簡單的例子:
//Item is a class representing any item with id, name and description.
public void addItem(Item item) {
SQLiteDatabase db = getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("name",item.name);
// name - column
contentValues.put("description",item.description);
// description is column in items table, item.description has value for description
db.insert("Items", null, contentValues);//Items is table name
db.close();
}
欲瞭解更多信息,請參閱本Link
這個答案是錯誤的: 'rawQuery'和'execSQL'可以參數化;這是'selectionArgs' /'bindArgs'的用途。 –
我從來沒有說'原始查詢'不能參數化!還添加了函數定義'rawQuery(String sql,String [] selectionArgs)','execSQL(String sql,Object [] bindArgs)'...在答案 – rafsanahmad007
「參數化查詢」是帶有參數的查詢,所以這個名稱會更好地適應其他功能('insert'甚至不使用參數*顯式*)。您應該對這些功能使用更好的描述。 –
- 1. Android - String和Sqlite數據庫上的數據有什麼區別?
- 2. 如何使用ContentValues和SQLiteOpenHelper在Android中修改sqlite數據庫?
- 3. 插入ContentValues後Android SQLite爲空
- 4. SQLite中LIKE和GLOB有什麼區別?
- 5. SQLite和SQL的區別是什麼
- 6. Android應用程序開發中的Mysql和SQLite數據庫有什麼區別?
- 7. Android Db插入ContentValues
- 8. 在SQLite數據庫中插入ContentValues時如何跳過主鍵
- 9. 我想用contentValues插入數據到我的sqlite數據庫與android
- 10. 無法在ContentValues中插入數據
- 11. 在Slick中使用DatabaseConfig和數據庫有什麼區別?
- 12. .sqlite和.db文件有什麼區別?
- 13. SQLAlchemy,PostgreSQL和SQLite有什麼區別?
- 14. android的abc.db和abc.sqlite有什麼區別?
- 15. SQL中的「LIKE」和「=」有什麼區別?
- 16. 在Mongo DB中保存和插入有什麼區別?
- 17. 在SQL Server中使用TRY ... CATCH和@@ ERROR有什麼區別?
- 18. dataStore和數據庫有什麼區別?
- 19. Android的SQLite,詢問ContentValues
- 20. 有什麼區別使用=和:在javascript
- 21. Android中Adapter和AdapterView有什麼區別?
- 22. dropbox,插入和數據存儲之間的區別是什麼
- 23. 在Android Helper類中使用Context和Activity有什麼區別?
- 24. 在Android中使用AppCompatActivity和Activity有什麼區別?
- 25. android:和android之間有什麼區別:
- 26. 在mysql語句中插入值和插入值有什麼區別?
- 27. 在jQuery UI中插入選項和不插入有什麼區別?
- 28. 寫入和寫入有什麼區別?
- 29. 插件和庫有什麼區別?
- 30. 插座和襪子有什麼區別?
https://developer.android.com/reference/android/content/ContentValues.html –