这篇文章给大家介绍SQLite的insert方法参数是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

看到一个API的参数不懂的时候,我们会做什么呢!Baidu,Google。很少回去看源码的吧,我也是,太懒了,批评一下。啪啪~

先看一段创建数据库的代码吧。

db.execSQL("CREATETABLEusers("+"_idINTEGERPRIMARYKEY,"+"usernameTEXT,"+"realnameTEXT,"+"nsidTEXT,"+"buddy_iconBLOB,"+"last_updateINTEGER);");

我们能看到其中有一个类型是我们不常用的,BLOB,学过数据库的人肯定都知道了,但是我还是要说一下,这个表示的是二进制数据类型,比如我们可以将一个图片的数据存入其中,当然小图可以,大图就算了嘛。for example:

addUser(db,"BobLee","BobLee","45701389@N00",R.drawable.boblee_buddyicon);

privatevoidaddUser(SQLiteDatabasedb,StringuserName,StringrealName,Stringnsid,inticon){finalContentValuesvalues=newContentValues();values.put(COLUMN_USERNAME,userName);values.put(COLUMN_REALNAME,realName);values.put(COLUMN_NSID,nsid);values.put(COLUMN_LAST_UPDATE,System.currentTimeMillis());finalBitmapbitmap=BitmapFactory.decodeResource(mContext.getResources(),icon);writeBitmap(values,COLUMN_BUDDY_ICON,bitmap);db.insert(TABLE_USERS,COLUMN_LAST_UPDATE,values);}staticvoidwriteBitmap(ContentValuesvalues,Stringname,Bitmapbitmap){if(bitmap!=null){//Trygoguesstimatehowmuchspacetheiconwilltakewhen//serialized//toavoidunnecessaryallocations/copiesduringthewrite.intsize=bitmap.getWidth()*bitmap.getHeight()*2;ByteArrayOutputStreamout=newByteArrayOutputStream(size);try{bitmap.compress(Bitmap.CompressFormat.PNG,100,out);out.flush();out.close();values.put(name,out.toByteArray());}catch(IOExceptione){//Ignore}}}

好了,闲话不多说了,今天要说的重点是其中的:

db.insert(TABLE_USERS,COLUMN_LAST_UPDATE,values);

参数问题,这里贴一下API说明:

publiclonginsert(Stringtable,StringnullColumnHack,ContentValuesvalues)AddedinAPIlevel1Conveniencemethodforinsertingarowintothedatabase.ParameterstablethetabletoinserttherowintonullColumnHackoptional;maybenull.SQLdoesn'tallowinsertingacompletelyemptyrowwithoutnamingatleastonecolumnname.Ifyourprovidedvaluesisempty,nocolumnnamesareknownandanemptyrowcan'tbeinserted.Ifnotsettonull,thenullColumnHackparameterprovidesthenameofnullablecolumnnametoexplicitlyinsertaNULLintointhecasewhereyourvaluesisempty.valuesthismapcontainstheinitialcolumnvaluesfortherow.ThekeysshouldbethecolumnnamesandthevaluesthecolumnvaluesReturnstherowIDofthenewlyinsertedrow,or-1ifanerroroccurred

好吧,我相信英文不好的同学肯定会与我一样,对第二个参数的说明还是有点糊涂的,行吧,那就Baidu,有道orGoogle翻译,不过这些终究是翻译工具,只能让你有个一知半解,最终还是需要实践才能得出最终答案的。

这里用国语详细解释下这三个参数的意义:

table:数据的表的名称

nullColumnHack:当values参数为空或者里面没有内容的时候,我们insert是会失败的(底层数据库不允许插入一个空行),为了防止这种情况,我们要在这里指定一个列名,到时候如果发现将要插入的行为空行时,就会将你指定的这个列名的值设为null,然后再向数据库中插入。

values:ContentValues对象,差不多就是一个map.通过键值对的形式存储值,键表示的是Column,值就是对应Column的值咯。

关于SQLite的insert方法参数是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。