每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的、与操作系统无关的sql数据库 --大名鼎鼎的sqlite。sqlite是一款轻量级数据库,它的设计目的是嵌入式,而且它占用的资源非常少,在嵌入式设备中,可能只需要几百KB,这也是 Android 系统采用 sqlite 数据库的原因之一吧。
简介
- 轻量级
使用 sqlite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小。
- 独立性
sqlite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。
- 隔离性
sqlite 数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件夹内,方便管理和维护。
- 跨平台
sqlite 目前支持大部分操作系统,不至电脑操作系统更在众多的手机系统也是能够运行,比如:Android。
- 多语言接口
sqlite 数据库支持多语言编程接口。
- 安全性
sqlite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只能有一个可以写入数据。
sqlite使用介绍
首先先来看一下本篇例子继承 sqliteOpenHelper 类实现的 dbHelper 类。
package
com.terry;
import android.content.ContentValues;
android.content.Context;
android.database.Cursor;
android.database.sqlite.sqliteDatabase;
android.database.sqlite.sqliteOpenHelper;
android.database.sqlite.sqliteDatabase.CursorFactory;
public class dbHelper extends sqliteOpenHelper{
private final static StringDATABASE_NAME = " sec_db ;
int DATABASE_VERSION 1 StringTABLE_NAME sec_pwd StringFIELD_ID _id StringFIELD_TITLE sec_Title ;
dbHelper(Contextcontext)
{
super (context,DATABASE_NAME, null ,DATABASE_VERSION);
}
@Override
void onCreate(sqliteDatabasedb){
// TODOAuto-generatedmethodstub
Stringsql Createtable + TABLE_NAME ( FIELD_ID integerprimarykeyautoincrement,0)">FIELD_TITLE text); ;
db.execsql(sql);
}
@Override
onUpgrade(sqliteDatabasedb,0)">oldVersion,0)">newVersion){
DROPTABLEIFEXISTS TABLE_NAME;
db.execsql(sql);
onCreate(db);
}
Cursorselect()
{
sqliteDatabasedb this .getReadableDatabase();
Cursorcursor db.query(TABLE_NAME,0)">_iddesc );
return cursor;
}
long insert(StringTitle)
{
sqliteDatabasedb .getWritableDatabase();
ContentValuescv new ContentValues();
cv.put(FIELD_TITLE,Title);
row db.insert(TABLE_NAME,cv);
row;
}
delete( id)
{
sqliteDatabasedb .getWritableDatabase();
Stringwhere =? ;
String[]whereValue {Integer.toString(id)};
db.delete(TABLE_NAME,where,whereValue);
}
update( id,StringTitle)
{
sqliteDatabasedb {Integer.toString(id)};
ContentValuescv
import android.content.ContentValues;
android.content.Context;
android.database.Cursor;
android.database.sqlite.sqliteDatabase;
android.database.sqlite.sqliteOpenHelper;
android.database.sqlite.sqliteDatabase.CursorFactory;
public class dbHelper extends sqliteOpenHelper{
private final static StringDATABASE_NAME = " sec_db ;
int DATABASE_VERSION 1 StringTABLE_NAME sec_pwd StringFIELD_ID _id StringFIELD_TITLE sec_Title ;
dbHelper(Contextcontext)
{
super (context,DATABASE_NAME, null ,DATABASE_VERSION);
}
@Override
void onCreate(sqliteDatabasedb){
// TODOAuto-generatedmethodstub
Stringsql Createtable + TABLE_NAME ( FIELD_ID integerprimarykeyautoincrement,0)">FIELD_TITLE text); ;
db.execsql(sql);
}
@Override
onUpgrade(sqliteDatabasedb,0)">oldVersion,0)">newVersion){
DROPTABLEIFEXISTS TABLE_NAME;
db.execsql(sql);
onCreate(db);
}
Cursorselect()
{
sqliteDatabasedb this .getReadableDatabase();
Cursorcursor db.query(TABLE_NAME,0)">_iddesc );
return cursor;
}
long insert(StringTitle)
{
sqliteDatabasedb .getWritableDatabase();
ContentValuescv new ContentValues();
cv.put(FIELD_TITLE,Title);
row db.insert(TABLE_NAME,cv);
row;
}
delete( id)
{
sqliteDatabasedb .getWritableDatabase();
Stringwhere =? ;
String[]whereValue {Integer.toString(id)};
db.delete(TABLE_NAME,where,whereValue);
}
update( id,StringTitle)
{
sqliteDatabasedb {Integer.toString(id)};
ContentValuescv
- 创建和打开数据库
上篇通过构造函数来创建数据库,看一下构造函数的方法android.database.sqlite.sqliteOpenHelper.sqliteOpenHelper(Contextcontext,Stringname,CursorFactoryfactory, int version)
public sqliteOpenHelper(Contextcontext,sqliteDatabase.CursorFactoryfactory,0)">version)
Since:APILevel 1
Createahelperobjecttocreate,open,and / ormanageadatabase.ThedatabaseisnotactuallycreatedoropeneduntiloneofgetWritableDatabase()orgetReadableDatabase()iscalled.
Parameters
contexttousetoopenorcreatethedatabase
nameofthedatabasefile,or null for anin - memorydatabase
factorytouse creatingcursorobjects,0)">the default
versionnumberofthedatabase(startingat ); if thedatabaseisolder,onUpgrade(sqliteDatabase,0)">)willbeusedtoupgradethedatabase
PublicMethods
- 创建表--》Create Table
一个数据库中可以包含多个表,每一条数据都存在指定的表中,要创建可以通过 execsql 方法来执行一条 sql 语句。上面的方法为