您好,登錄后才能下訂單哦!
這篇文章給大家介紹SQLite的insert方法參數是怎樣的,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
看到一個API的參數不懂的時候,我們會做什么呢!Baidu,Google。很少回去看源碼的吧,我也是,太懶了,批評一下。啪啪~
先看一段創建數據庫的代碼吧。
db.execSQL("CREATE TABLE users (" + "_id INTEGER PRIMARY KEY, " + "username TEXT, " + "realname TEXT, " + "nsid TEXT, " + "buddy_icon BLOB," + "last_update INTEGER);");
我們能看到其中有一個類型是我們不常用的,BLOB,學過數據庫的人肯定都知道了,但是我還是要說一下,這個表示的是二進制數據類型,比如我們可以將一個圖片的數據存入其中,當然小圖可以,大圖就算了嘛。for example:
addUser(db, "Bob Lee", "Bob Lee", "45701389@N00", R.drawable.boblee_buddyicon);
private void addUser(SQLiteDatabase db, String userName, String realName, String nsid, int icon) { final ContentValues values = new ContentValues(); values.put(COLUMN_USERNAME, userName); values.put(COLUMN_REALNAME, realName); values.put(COLUMN_NSID, nsid); values.put(COLUMN_LAST_UPDATE, System.currentTimeMillis()); final Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), icon); writeBitmap(values, COLUMN_BUDDY_ICON, bitmap); db.insert(TABLE_USERS, COLUMN_LAST_UPDATE, values); } static void writeBitmap(ContentValues values, String name, Bitmap bitmap) { if (bitmap != null) { // Try go guesstimate how much space the icon will take when // serialized // to avoid unnecessary allocations/copies during the write. int size = bitmap.getWidth() * bitmap.getHeight() * 2; ByteArrayOutputStream out = new ByteArrayOutputStream(size); try { bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); out.flush(); out.close(); values.put(name, out.toByteArray()); } catch (IOException e) { // Ignore } } }
好了,閑話不多說了,今天要說的重點是其中的:
db.insert(TABLE_USERS, COLUMN_LAST_UPDATE, values);
參數問題,這里貼一下API說明:
public long insert (String table, String nullColumnHack, ContentValues values) Added in API level 1 Convenience method for inserting a row into the database. Parameters table the table to insert the row into nullColumnHack optional; may be null. SQL doesn't allow inserting a completely empty row without naming at least one column name. If your provided values is empty, no column names are known and an empty row can't be inserted. If not set to null, the nullColumnHack parameter provides the name of nullable column name to explicitly insert a NULL into in the case where your values is empty. values this map contains the initial column values for the row. The keys should be the column names and the values the column values Returns the row ID of the newly inserted row, or -1 if an error occurred
好吧,我相信英文不好的同學肯定會與我一樣,對第二個參數的說明還是有點糊涂的,行吧,那就Baidu,有道orGoogle翻譯,不過這些終究是翻譯工具,只能讓你有個一知半解,最終還是需要實踐才能得出最終答案的。
這里用國語詳細解釋下這三個參數的意義:
table:數據的表的名稱
nullColumnHack:當values參數為空或者里面沒有內容的時候,我們insert是會失敗的(底層數據庫不允許插入一個空行),為了防止這種情況,我們要在這里指定一個列名,到時候如果發現將要插入的行為空行時,就會將你指定的這個列名的值設為null,然后再向數據庫中插入。
values:ContentValues對象,差不多就是一個map.通過鍵值對的形式存儲值,鍵表示的是Column,值就是對應Column的值咯。
關于SQLite的insert方法參數是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。