SQLite是轻量级的、嵌入式的、关系型数据库,目前已经在iPhone、Android等手机系统中使用,SQLite可移植性好,很容易使用,很小,高效而且可靠。SQLite嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是单独的一个进程。SQLite数据库对SQL规范的支持很全面,它支持大多数SQL标准,同时摒弃了一些复杂的功能,添加了一些自身的特性,下图是SQLite所支持的SQL语句类型:
下图是SQLlite所定义的数据类型:
SQLite也支持SQL标准类型,VARCHAR、CHAR、BIGINT等。
创建数据库
Android 不自动提供数据库。在 Android 应用程序中使用 SQLite,必须自己创建数据库,然后创建表、索引,填充数据。Android 提供了 SQLiteOpenHelper 帮助你创建一个数据库,只要继承 SQLiteOpenHelper 类,就可以创建数据库。继承了SQLiteOpenHelper的子类,必须实现三个方法:
1、构造函数,调用父类 SQLiteOpenHelper 的构造函数。这个方法需要四个参数:上下文环境(例如,一个 Activity),数据库名字,一个可选的游标工厂(通常是 Null),一个代表你正在使用的数据库模型版本的整数。
2、onCreate()方法,它需要一个 SQLiteDatabase 对象作为参数,根据需要对这个对象填充表和初始化数据。
3、onUpgrage() 方法,它需要三个参数,一个 SQLiteDatabase 对象,一个旧的版本号和一个新的版本号,这样可以清楚如何把一个数据库从旧的模型转变到新的模型。
如下代码:
class databaseAdapter extends SQLiteOpenHelper{
public databaseAdapter(Context context, String name,
CursorFactory factory, int version) {
super (context, name, factory, version);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
还可以使用如下方法创建数据库:
1、Context.createDatabase(String name,int vision,int mode,CursorFactory factory);//创建一个新的数据库并返回一个SQLiteDatabase对象
2、
SQLiteDatabase mydb = SQLiteDatabase.create(new CursorFactory() {
@Override
public Cursor newCursor(SQLiteDatabase db, SQLiteCursorDriver masterQuery,
String editTable, SQLiteQuery query) { return null;
}
});
3、
SQLiteDatabase db = this.openOrCreateDatabase("mydb.db", MODE_PRIVATE, new CursorFactory() {
@Override
public Cursor newCursor(SQLiteDatabase db, SQLiteCursorDriver masterQuery,
String editTable, SQLiteQuery query) {
// TODO Auto-generated method stub
return null;
}
});
删除数据库
Context.deleteDatabase(String name);//删除指定名字的数据库
打开数据库
Context.openDatabase(String basename,CursorFactory factory);//打开一个存在的数据库,并返回SQLiteDatabase对象
非查询SQL指令
SQLiteDatabase.execSQLite(String sql);//可以用来执行非查询的SQL指令,这些指令执行后没有结果返回
查询SQL指令,游标cursors的使用
Cursor cursor = mydb.rawQuery(String sql,String[] selectionArg);//第一个参数为查询语句,第二个参数为查询语句中的占位符,若没有占位符,则第二个参数为null