摘要:每个应用程序都要使用数据,
Android
应用程序也不例外,
Android
使用开源的、与操作系统无关的
SQL
数据库
--SQLite
,本文介绍的就是如何为你的
Android
应用程序创建和操作
SQLite
数据库。
数据库支持每个应用程序无论大小的生命线,除非你的应用程序只处理简单的数据,那么就需要一个数据库系统存储你的结构化数据,Android使用SQLite数据库,它是一个开源的、支持多操作系统的SQL数据库,在许多领域广泛使用,如Mozilla FireFox就是使用SQLite来存储配置数据的,iPhone也是使用SQLite来存储数据的。
在Android中,你为某个应用程序创建的数据库,只有它可以访问,其它应用程序是不能访问的,数据库位于Android设备/data/data//databases文件夹中,在这篇文章中,你将会学习到如何在Android中创建和使用数据库。
Android如何使用SQLiteOpenHelper
•1.SQLiteOpenHelper
• SQliteOpenHelper是一个抽象类,来管理数据库的创建和版本的管理。要使用它必须实现它的nCreate(SQLiteDatabase),onUpgrade(SQLiteDatabase, int, int)方法
• onCreate:当数据库第一次被建立的时候被执行,例如创建表,初始化数据等。
• onUpgrade:当数据库需要被更新的时候执行,例如删除久表,创建新表。
2.实现代码
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
public class DBHelper extends SQLiteOpenHelper
{ //数据库版本 private static final int VERSION = 1;
//新建一个表 String sql = "create table if not exists TestUsers"+ "(id int primary key,name varchar,sex varchar)";
public DBHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); }
public DBHelper(Context context,String name,int version){ this(context,name,null,version); }
public DBHelper(Context context,String name){ this(context,name,VERSION); }
@Override
public void onCreate(SQLiteDatabase db) { db.execSQL(sql); }
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }
}
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
public class DBHelper extends SQLiteOpenHelper
{ //数据库版本 private static final int VERSION = 1;
//新建一个表 String sql = "create table if not exists TestUsers"+ "(id int primary key,name varchar,sex varchar)";
public DBHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); }
public DBHelper(Context context,String name,int version){ this(context,name,null,version); }
public DBHelper(Context context,String name){ this(context,name,VERSION); }
@Override
public void onCreate(SQLiteDatabase db) { db.execSQL(sql); }
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }
}
3.SQLite的使用
•Android提供了一个名为SQLiteDatabase的类,它封装了一些操作数据库的API。使用它能实现基本的CRUD操作,通过getWritableDatabase()和getReadableDatabase()可以获取数据库实例。
4.实现代码
/**
* 新建一个数据库
* @param dbName
* @return
*/
public SQLiteDatabase CreateDatabase(String dbName){
dbHelper = new DBHelper(this, dbName);
return dbHelper.getWritableDatabase();
}
/**
* 打开数据库
*/
public void OpenDb(){
dbHelper = new DBHelper(this, "TestDb01");
db = dbHelper.getWritableDatabase();
}
/**
* 关闭数据库
*/
public void CloseDb(){
dbHelper.close();
}
/**
* 新建一个表
* @param db
*/
public void CreateTable(){
db = dbHelper.getWritableDatabase();
String sql = "create table if not exists TestUsers"+
"(id int primary key,name varchar,sex varchar)";
try {
db.execSQL(sql);
} catch (SQLException e) {
Log.i("err", "create table failed");
}
}
/**
* 插入数据
*/
public void InsertTb(){
db = dbHelper.getWritableDatabase();
String sql = "insert into TestUsers (id,name,sex) values (2,'hongguang','men')";
try {
db.execSQL(sql);
} catch (SQLException e) {
Log.i("err", "insert failed");
}
}
/**
* 更新数据
*/
public void UpdateTb() {
db = dbHelper.getWritableDatabase();
String sql = "Update TestUsers set name = 'anhong',sex = 'men' where id = 2";
try {
db.execSQL(sql);
} catch (SQLException e) {
Log.i("err", "update failed");
}
}
/**
* 删除数据
*/
public void DeleteTb(){
db = dbHelper.getWritableDatabase();
String sql = "delete from TestUsers where id = 2";
try {
db.execSQL(sql);
} catch (SQLException e) {
Log.i("err", "delete failed");
}
}
5.一些SQLite操作命令
• 5.1 adb shell 进入命令模式
• 5.2 cd 文件名 进入文件
• 5.3 ls或ls -l 查看目录下的文件
• 5.4 sqlite3 数据库名 进入数据库
• 5.5 .schema 查看数据库下的信息
• 5.6 ctrl+d 退出sqlite模式