android sqlite基本用法(操作实例)

1.SQLite简介

SQLite是一款轻型的数据库,是恪守ACID的相关式数据库办理体系,它的规划目标是嵌入式的,而且现在已经在许多嵌入式产品中运用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支撑Windows/Linux/Unix等等干流的操作体系,一起能够跟许多程序语言相结合,比如Tcl、PHP、Java、C++、.Net等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源国际闻名的数据库办理体系来讲,它的处理速度比他们都快。

2.SQLite的特点:

轻量级

SQLite和C/S模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器。运用SQLite一般只需要带上它的一个动态库,就能够享用它的悉数功能。而且那个动态库的尺寸也挺小,以版本3.6.11为例,Windows下487KB、Linux下347KB。

不需要”安装”

SQLite的中心引擎本身不依赖第三方的软件,运用它也不需要”安装”。有点相似那种绿色软件。

单一文件

数据库中所有的信息(比如表、视图等)都包含在一个文件内。这个文件能够自由复制到其它目录或其它机器上。

跨渠道/可移植性

除了干流操作体系windows,linux之后,SQLite还支撑其它一些不常用的操作体系。

弱类型的字段

同一列中的数据能够是不同类型

开源

这个信任咱们都懂的!!!!!!!!!!!!

3.SQLite数据类型

一般数据选用的固定的静态数据类型,而SQLite选用的是动态数据类型,会根据存入值主动判断。SQLite具有以下五种常用的数据类型:

NULL:这个值为空值

VARCHAR(n):长度不固定且其最大长度为n的字串,n不能超过4000。

CHAR(n):长度固定为n的字串,n不能超过254。

INTEGER:值被标识为整数,依据值的巨细能够顺次被存储为1,2,3,4,5,6,7,8.

REAL:所有值都是浮动的数值,被存储为8字节的IEEE浮动标记序号.

TEXT:值为文本字符串,运用数据库编码存储(TUTF-8,UTF-16BEorUTF-16-LE).

BLOB:值是BLOB数据块,以输入的数据格式进行存储。如何输入就如何存储,不改变格式。

DATA:包含了年份、月份、日期。

TIME:包含了小时、分钟、秒。

信任学过数据库的童鞋对这些数据类型都不陌生的!!!!!!!!!!

二.SQLiteDatabase的介绍

Android供给了创立和是用SQLite数据库的API。SQLiteDatabase代表一个数据库目标,供给了操作数据库的一些办法。在Android的SDK目录下有sqlite3东西,咱们能够利用它创立数据库、创立表和履行一些SQL句子。下面是SQLiteDatabase的常用办法。

SQLiteDatabase的常用办法

办法称号

办法表明意义

openOrCreateDatabase(Stringpath,SQLiteDatabase.CursorFactoryfactory)

翻开或创立数据库

insert(Stringtable,StringnullColumnHack,ContentValuesvalues)

刺进一条记录

delete(Stringtable,StringwhereClause,String[]whereArgs)

删去一条记录

query(Stringtable,String[]columns,Stringselection,String[]selectionArgs,StringgroupBy,Stringhaving,StringorderBy)

查询一条记录

update(Stringtable,ContentValuesvalues,StringwhereClause,String[]whereArgs)

修正记录

execSQL(Stringsql)

履行一条SQL句子

close()

封闭数据库

Google公司命名这些办法的称号都是非常形象的。例如openOrCreateDatabase,咱们从字面英文意义就能看出这是个翻开或创立数据库的办法。

1、翻开或者创立数据库

在Android中运用SQLiteDatabase的静态办法openOrCreateDatabase(Stringpath,SQLiteDatabae.CursorFactoryfactory)翻开或者创立一个数据库。它会主动去检测是否存在这个数据库,如果存在则翻开,不存在则创立一个数据库;创立成功则返回一个SQLiteDatabase目标,否则抛出异常FileNotFoundException。

下面是创立名为“stu.db”数据库的代码:

openOrCreateDatabase(Stringpath,SQLiteDatabae.CursorFactoryfactory)

参数1数据库创立的路径

参数2一般设置为null就能够了

1

db=SQLiteDatabase.openOrCreateDatabase(“/data/data/com.lingdududu.db/databases/stu.db”,null);

2、创立表

创立一张表的过程很简单:

编写创立表的SQL句子

调用SQLiteDatabase的execSQL()办法来履行SQL句子

下面的代码创立了一张用户表,属性列为:id(主键而且主动增加)、sname(学生名字)、snumber(学号)

privatevoidcreateTable(SQLiteDatabasedb){

//创立表SQL句子

Stringstu_table=”createtableusertable(_idintegerprimarykeyautoincrement,snametext,snumbertext)”;

//履行SQL句子

db.execSQL(stu_table);

}

3、刺进数据

刺进数据有两种办法:

①SQLiteDatabase的insert(Stringtable,StringnullColumnHack,ContentValuesvalues)办法,

参数1表称号,

参数2空列的默认值

参数3ContentValues类型的一个封装了列称号和列值的Map;

②编写刺进数据的SQL句子,直接调用SQLiteDatabase的execSQL()办法来履行

榜首种办法的代码:

privatevoidinsert(SQLiteDatabasedb){

//实例化常量值

ContentValuescValue=newContentValues();

//增加用户名

cValue.put(“sname”,”xiaoming”);

//增加密码

cValue.put(“snumber”,”01005″);

//调用insert()办法刺进数据

db.insert(“stu_table”,null,cValue);

}

第二种办法的代码:

privatevoidinsert(SQLiteDatabasedb){

//刺进数据SQL句子

Stringstu_sql=”insertintostu_table(sname,snumber)values(‘xiaoming’,’01005′)”;

//履行SQL句子

db.execSQL(sql);

}

4、删去数据

删去数据也有两种办法:

①调用SQLiteDatabase的delete(Stringtable,StringwhereClause,String[]whereArgs)办法

参数1表称号

参数2删去条件

参数3删去条件值数组

②编写删去SQL句子,调用SQLiteDatabase的execSQL()办法来履行删去。

榜首种办法的代码:

privatevoiddelete(SQLiteDatabasedb){

//删去条件

StringwhereClause=”id=?”;

//删去条件参数

String[]whereArgs={String.valueOf(2)};

//履行删去

db.delete(“stu_table”,whereClause,whereArgs);

}

第二种办法的代码:

privatevoiddelete(SQLiteDatabasedb){

//删去SQL句子

Stringsql=”deletefromstu_tablewhere_id=6″;

//履行SQL句子

db.execSQL(sql);

}

5、修正数据

修正数据有两种办法:

①调用SQLiteDatabase的update(Stringtable,ContentValuesvalues,StringwhereClause,String[]whereArgs)办法

参数1表称号

参数2跟队伍ContentValues类型的键值对Key-Value

参数3更新条件(where字句)

参数4更新条件数组

②编写更新的SQL句子,调用SQLiteDatabase的execSQL履行更新。

榜首种办法的代码:

privatevoidupdate(SQLiteDatabasedb){

//实例化内容值ContentValuesvalues=newContentValues();

//在values中增加内容

values.put(“snumber”,”101003″);

//修正条件

StringwhereClause=”id=?”;

//修正增加参数

String[]whereArgs={String.valuesOf(1)};

//修正

db.update(“usertable”,values,whereClause,whereArgs);

}

第二种办法的代码:

privatevoidupdate(SQLiteDatabasedb){

//修正SQL句子

Stringsql=”updatestu_tablesetsnumber=654321whereid=1″;

//履行SQL

db.execSQL(sql);

}

6、查询数据

在Android中查询数据是经过Cursor类来完成的,当咱们运用SQLiteDatabase.query()办法时,会得到一个Cursor目标,Cursor指向的便是每一条数据。它供给了许多有关查询的办法,具体办法如下:

publicCursorquery(Stringtable,String[]columns,Stringselection,String[]selectionArgs,StringgroupBy,Stringhaving,StringorderBy,Stringlimit);

各个参数的意义阐明:

参数table:表称号

参数columns:列称号数组

参数selection:条件字句,相当于where

参数selectionArgs:条件字句,参数数组

参数groupBy:分组列

参数having:分组条件

参数orderBy:排序列

参数limit:分页查询约束

参数Cursor:返回值,相当于成果集ResultSet

Cursor是一个游标接口,供给了遍历查询成果的办法,如移动指针办法move(),获得列值办法getString()等.
图片[1]-android sqlite基本用法(操作实例)-宏启网络科技,androidsqlite操作实例,packagecom.locke.android;

importjava.text.SimpleDateFormat;

importjava.util.ArrayList;

importjava.util.Date;

importjava.util.List;

importandroid.content.ContentValues;

importandroid.content.Context;

importandroid.database.Cursor;

importandroid.database.sqlite.SQLiteDatabase;

importandroid.database.sqlite.SQLiteException;

importandroid.database.sqlite.SQLiteOpenHelper;

importandroid.util.Log;

importcom.locke.android.model.User;

publicclassDbHelperextendsSQLiteOpenHelper{

privatefinalstaticStringTAG=”DbHelper”;//程序标志

privatefinalstaticStringDATABASE_NAME=”locke_db”;

privatefinalstaticintDATABASE_VERSION=1;

privatefinalstaticStringTABLE_NAME=”tbl_users”;

privatefinalstaticStringCREATE_TABLE_USERS=

“CREATETABLEIFNOTEXISTStbl_users(idINTEGERPRIMARYKEYAUTOINCREMENT,nameTEXT,passwordTEXT,regdatedate)”;

privatefinalstaticStringDROP_TABLE_USERS=

“DROPTABLEIFEXISTtbl_users”;

privatefinalstaticStringFIELD_ID=”id”;

publicfinalstaticStringSQL_RAWQUERY=”selectid,name,password,regdateFROMtbl_users”;

publicDbHelper(Contextcontext){

super(context,DATABASE_NAME,null,DATABASE_VERSION);

}

@Override

publicvoidonCreate(SQLiteDatabasedb){

db.execSQL(CREATE_TABLE_USERS);

}

@Override

publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){

db.execSQL(DROP_TABLE_USERS);

onCreate(db);

}

/*

*添加一条User记录

*@paramuser用户记录

*@return返回插入的行id

*/

publiclongaddUser(Useruser){

SQLiteDatabasedb=null;

try{

//转化SQLite日期格式

SimpleDateFormatdateFormat=newSimpleDateFormat(“yyyy-MM-ddHH:mm:ss”);

ContentValuesvalues=newContentValues();

values.put(“name”,user.GetName());

values.put(“password”,user.GetPassword());

values.put(“regdate”,dateFormat.format(user.GetRegdate()));

db=this.getWritableDatabase();

longresult=db.insert(TABLE_NAME,null,values);

returnresult;

}catch(SQLiteExceptione){

return-1;

}finally{

if(db.isOpen())

db.close();

}

}

/*

*查询记录

*@return获取到的行记录

*/

publicList<User>queryUsers(){

Cursorc=null;

SQLiteDatabasedb=null;

List<User>result=newArrayList<User>();

try

{

db=this.getReadableDatabase();

c=db.query(TABLE_NAME,newString[]{“id”,”name”,”password”,”regdate”},null,null,null,null,null,”idasc”);

c.moveToFirst();

while(!c.isAfterLast()){

Useruser=newUser();

user.SetId(c.getInt(0));

user.SetName(c.getString(1));

user.SetPassword(c.getString(2));

user.SetRegdate(newDate(c.getString(0)));

result.add(user);

c.moveToNext();

}

returnresult;

}catch(SQLiteExceptione){

Log.e(TAG,e.getMessage());

returnnull;

}finally{

if(!c.isClosed()){

c.close();

}

if(db.isOpen()){

db.close();

}

}

}

/*

*删除一条用户记录

*@return是否删除成功

*/

publicbooleandelete(Useruser)

{

SQLiteDatabasedb=null;

try{

db=this.getWritableDatabase();

Stringwhere=FIELD_ID+”=?”;

String[]whereValue={Integer.toString(user.GetId())};

longresult=db.delete(TABLE_NAME,where,whereValue);

returnresult>0;

}catch(SQLiteExceptione){

returnfalse;

}finally{

if(db.isOpen()){

db.close();

}

}

}

/*

*更新一条记录

*@return是否更新成功

*/

publicbooleanupdate(Useruser){

SQLiteDatabasedb=null;

try{

db=this.getWritableDatabase();

Stringwhere=FIELD_ID+”=?”;

String[]whereValue={Integer.toString(user.GetId())};

ContentValuesvalues=newContentValues();

values.put(“name”,user.GetName());

values.put(“password”,user.GetPassword());

longresult=db.update(TABLE_NAME,values,where,whereValue);

returnresult>0;

}catch(SQLiteExceptione){

returnfalse;

}finally{

if(db.isOpen()){

db.close();

}

}

}

}

© 版权声明
THE END
喜欢就支持一下吧
点赞44赞赏 分享
评论 抢沙发

请登录后发表评论