`
holoblog
  • 浏览: 1224945 次
博客专栏
E0fcf0b7-6756-3051-9a54-90b4324c9940
SQL Server 20...
浏览量:18896
文章分类
社区版块
存档分类
最新评论

ANDROID+SQLITE详解2

 
阅读更多

之前讲解过在ANDROID中在使用SQLITE中的EXECSQL()与RAWQUERY()方法来实现CURD的操作,但是那些都是在针对我们都非常熟练使用SQLITE的情况下来操作的,只是有时候不能避免我们每个人的操作习惯不同与可能在操作过程中为一些初级者提供更方便的操作过程,所以ANDROID相对来说还是做得很人性话的,如它为一些初级使用在对SQL进行包装,初级使用在只需要对其简单的参数设置与实现就可以完成一般的SQL的CURD操作了,如ANDROID提供了四个方法onInsert(),onUpdate(),onQuery(),onDelete(),下面我们就来对其几个方法进行详细讲解

首先是insert()方法:SQLiteDatabase db = new DBOpenHelper().getWritableDatabae();db.insert(String table,String nullColumnHack,ContentValues values);在这个方法中第一个参数为:所需填入的表名,第二个参数就是空列时的处理方式,第三个参数为用来存放各个字段的值,类似与Map用来存放名值对一样:其详细操作可以如下:当我们有一个可传实体参数名为Contact,其Contact的字段名有:id为主键,name,phone,首先打开数据库,SQLiteDatabase db = new DBOpenHelper().getWritableDatabase(),ContentValues values = new ContentValues();values.put("name",Contact.getName),values.put("phone",Contact.getPhone);db.insert("Contact",null,values);这样就可以完全实现使用基本的插入方法对数据来进行插入操作

其次就是update()方法的使用:同样SQLiteDatabase db = new DBOpenHelper().getWritableDatabase()来打开数据库,然后使用ContentValues values = new ContentValues();values.put("name",contact.getName());values.put("phone",contact.getPhone());db.update(String table,ContentValues values,String whereClause,String[] whereArgs);即第一个参数为表名,第二个参数为所更新的字段名,第三课参数为,对其操作的条件,第四个参数为在第三个参数的基础上所需的条件值,具体操作如下:SQLiteDatabase db = new DBOpenHelper().getWritableDatabasae();ContentValues values = new ContentValues();values.put("name",contact.getName());values.put("phone",contact.getPhone());db.update("contact",values,"id=?",new String[]{String.valueOf(contact.getId())});

再次就是query()的操作:在查询的操作中我们需要对其游标进行操作,所以希望有对数据库SQL的游标不是怎么熟悉的,自己去网上再查看一下,下面我就不多做介绍了:db.query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy);同样第一个参数为表名,第二个参数为列名,即字段,第三个参数为条件,第四个参数为条件值,第五个参数为分组操作,第六个参数为过滤操作,第七个参数为排序操作,EG:SQLiteDatabase db = DBOpenHelper.getReadableDatabase();Cursor cursor = db.query("contact",null,"id=?,new String[]{id.toString()}",null,null,"id asc");if(cursor.moveToFirst()){int id = cursor.getInt(cursor.getColumnIndex("id"));String name = cursor.getString(cursor.getColumnI,ndex("name"));String phone = cursor.getString(cursor.getColumnIndex("phone"));return new Contact(id,name,phone);}, 在这里查询语句也就完毕了,是不是很简单.

最后就是delete()方法的操作了:它更简单:SQLiteDatabase db = new DBOpenHelper().getWritableDatabase();db.delete(String table,String whereClause,String[] selectionArgs):SQLiteDatabase db = new DBOpenHelper().getWritable();db.delete("contact","id=?",new String[]{id.toString()});

好了以上就是在ANDROID里为初学者提供的简单的对SQL的CURD操作,希望有不明白的可以多在网上查些资料来解决,当然它不仅仅只提供了这几个方法,比如还有replace()等,只是在这里我需要说明的是,能不使用这基本的操作尽量不要使用,因为它是对SQL封装后的一种操作,虽然免去了我们写SQL语句的一些细节,但是对执行一个完整SQL语句还是很有影响的,一般来说封装的直接后果会带来不必要的功能添加与数据执行执行周期,这最终会影响数据执行的性能,所以个人还是介意使用execSQL()与rawQuery()来直接代替操作,因为在源码中我们可以看到这么一段:StringBuilder sb = new StringBuilder(521);sb.append("INSERT");if(algorithm!=null){sql.append(" OR ");sql.append(algorithm.value());sql.append("INTO ");sql.append(table);},如我们在使用insert()方法时,其values有没有值,nullColumnHack项都会为我们添加进一条参数,所以当第三个参数为空时,或者集合你没有元素,系统默认为了构造完整的SQL语句就会使用到第二个参数,如果第二个参数也为空的话,这样的语法按理那说还是有问题的,还有就是把第二个参数设置为主键也是不行的,因为其默认为空,然而主键是不能为空的,只是SQLITE认为是可以的,因为当你对其设置为主键后,它的默认空值就不会起作用,它还会自动增长起作用,其名称是可以随意取的,OK在这里对SQLITE的基本查询方式的操作也就讲完了,可能在讲解这些操作中我不是太有顺序的讲解,因为这些都是很久的以前的简单总结,所以就在这里觉得有时间的时候就贴上来,给那些热爱编程的朋友可以做些相关参考......如有什么疑问请可随时留言

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics