摘要:每個應用程序都要使用數據,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) { }
}
3.SQLite的使用
•Android提供了一個名爲SQLiteDatabase的類,它封裝了一些操作數據庫的API。使用它能實現基本的CRUD操作,通過getWritableDatabase()和getReadableDatabase()可以獲取數據庫實例。
/**
* 新建一個數據庫
* @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模式