之前讲解过在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的基本查询方式的操作也就讲完了,可能在讲解这些操作中我不是太有顺序的讲解,因为这些都是很久的以前的简单总结,所以就在这里觉得有时间的时候就贴上来,给那些热爱编程的朋友可以做些相关参考......如有什么疑问请可随时留言
分享到:
相关推荐
Android 数据库SQLite 详解,简单学好SQLite
这里是我之前在开发中做测试并遇到的问题与怎么去的注意这些问题与解决问题的出处所在,希望能为初学者做更详细的参考......
android之SQLite数据库开发详解: Android 开发中使用 SQLite 数据库 简介: SQLite 是一款非常流行的嵌入式数据库,它支持 SQL 查询,并且只用很少的内存。Android 在运行时集成了 SQLite,所以每个 Android 应用...
android sqlite 使用详解 带源码讲解
雨松MOMO带你做游戏 Android软件开发之数据库SQLite 详解源码 欢迎大家下载阅读。
Android中SQLite应用详解
Android Sqlite使用详解,增删改查详细解析
android-SQLite3命令详解教程,转发分享
AndroidSQLite详解
android各组件详解- SQLite.
主要介绍了Android Sqlite命令详解(基本命令)的相关资料,需要的朋友可以参考下
主要介绍了Android 中SQLite技术实例详解的相关资料,需要的朋友可以参考下
sqlite详解项目demo,详细描述了在android环境下对sqlite数据库的增删改查操作
Android中SQLite 使用方法详解 现在的主流移动设备像android、iPhone等都使用SQLite作为复杂数据的存储引擎,在我们为移动设备开发应用程序时,也许就要使用到SQLite来存储我们大量的数据,所以我们就需要掌握移动...
2、Android中使用SQLite 一、什么是SQLite SQLite是一款开源的、轻量级的、嵌入式的、关系型数据库。它在2000年由D. Richard Hipp发布,可以支援Java、Net、PHP、Ruby、Python、Perl、C等几乎所有的现代编程语言,...
android SQLite代码,使用介绍可以看我的博客-android SQLite数据库用法图文详解(附源码),have fun!