详解Android中一些SQLite的增删改查操作
在Android开发中经常要涉及到对数据的操作。Android本身提供了四种数据存储方式。包括:SharePreference,SQLite,ContentProvider,File。
在Android,数据都是么私有的,要实现数据共享,正确方式是使用ContentProvider。
SQLite:SQLite是一个轻量级的数据库,支持基本SQL语法,是常被采用的一种数据存储方式。Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数据库的API。
SharedPreference:除SQLite数据库外,另一种常用的数据存储方式,其本质就是一个xml文件,常用于存储较简单的参数设置。
File:即常说的文件(I/O)存储方法,常用语存储大数量的数据,但是缺点是更新数据将是一件困难的事情。
ContentProvider:Android系统中能实现所有应用程序共享的一种数据存储方式,由于数据通常在各应用间的是互相私密的,所以此存储方式较少使用,但是其又是必不可少的一种存储方式。例如音频,视频,图片和通讯录,一般都可以采用此种方式进行存储。每个ContentProvider都会对外提供一个公共的URI(包装成Uri对象),如果应用程序有数据需要共享时,就需要使用ContentProvider为这些数据定义一个URI,然后其他的应用程序就通过ContentProvider传入这个URI来对数据进行操作。
本文主要是讲一些SQLite的操作并附上代码。
SQLite是一种转为嵌入式设备设计的轻型数据库,其只有五种数据类型,分别是:
NULL: 空值
INTEGER: 整数
REAL: 浮点数
TEXT: 字符串
BLOB: 大数据
在SQLite中,并没有专门设计BOOLEAN和DATE类型,因为BOOLEAN型可以用INTEGER的0和1代替true和false,而DATE类型则可以拥有特定格式的TEXT、REAL和INTEGER的值来代替显示,为了能方便的操作DATE类型,SQLite提供了一组函数,详见:http://www.sqlite.org/lang_datefunc.html,这样简单的数据类型设计更加符合嵌入式设备的要求。
importandroid.content.ContentValues;
importandroid.database.Cursor;
importandroid.database.sqlite.SQLiteDatabase;
/**
*对表的增删改查的操作。这里的表里只有uid一列作为举例。
*/
publicclassDemoDBUtil{
//要操作的表名
publicstaticfinalStringDEMO_DB_NAME="demo_db_name";
//SQLiteDatabase对象
privateSQLiteDatabasesqLiteDatabase;
/**
*带参构造方法,初始化SQLiteDatabase。
*@paramsqLiteDatabaseSQLiteDatabase实例
*/
publicDemoDBUtil(SQLiteDatabasesqLiteDatabase){
this.sqLiteDatabase=sqLiteDatabase;
}
/**
*增加数据。
*@paramuid要新增的uid
*/
publicvoidadd(Stringuid){
ContentValuesvalues=newContentValues();
values.put("uid",uid);
sqLiteDatabase.insert(DEMO_DB_NAME,null,values);
}
/**
*删除表里所有数据。
*/
publicvoiddelete(){
sqLiteDatabase.delete(DEMO_DB_NAME,null,null);
}
/**
*删除表里与uid对应的数据。
*@paramuid某个uid
*/
publicvoiddelete(Stringuid){
sqLiteDatabase.delete(DEMO_DB_NAME,"uid=?",newString[]{uid});
}
/**
*更新表,将表所有uid替换为newUid。
*/
publicvoidupdate(){
ContentValuesvalues=newContentValues();
values.put("uid","newUid");
sqLiteDatabase.update(DEMO_DB_NAME,values,null,null);
}
/**
*将表里对应的uid替换为newUid。
*@paramuid表里的某个uid
*/
publicvoidupdate(Stringuid){
ContentValuesvalues=newContentValues();
values.put("uid","newUid");
sqLiteDatabase.update(DEMO_DB_NAME,values,"uid=?",newString[]{uid});
}
/**
*查询表里所有数据,取得uid对应的值。
*/
publicvoidquery(){
Cursorcursor=sqLiteDatabase.query(DEMO_DB_NAME,null,null,null,null,null,null);
while(cursor.moveToNext()){
Stringuid=cursor.getString(cursor.getColumnIndex("uid"));
}
if(null!=cursor){
cursor.close();
}
}
/**
*取得对应uid的值。
*@paramuid表里的某个uid
*/
publicvoidquery(Stringuid){
Cursorcursor=sqLiteDatabase.query(DEMO_DB_NAME,null,"uid=?",newString[]{uid},null,null,null);
while(cursor.moveToNext()){
StringqueryUid=cursor.getString(cursor.getColumnIndex("uid"));
}
if(null!=cursor){
cursor.close();
}
}
/**
*取得最后一条记录。
*/
publicvoidqueryLastRecord(){
StringlastTimeSql="select*fromdemo_db_nameorderbyiddescLIMIT1";
Cursorcursor=sqLiteDatabase.rawQuery(lastTimeSql,null);
while(cursor.moveToNext()){
StringqueryUid=cursor.getString(cursor.getColumnIndex("uid"));
}
if(null!=cursor){
cursor.close();
}
}
}
上文主要是针对表的一个简单的增删改查的操作,可以根据实际情况修改来满足项目的需要。
以上就是本文的全部内容,希望能给大家一个参考,也希望大家多多支持毛票票。