先畫個圖,了解下android下數據庫操作的簡單流程:
1.首先,寫一個自己的數據庫操作幫助類,這個類繼承自android自帶的sqliteopenhelper.
2.在自己的dao層借助自己的helper寫數據庫操作的一些方法
3.activity調用dao層的數據庫操作方法進行操作
下面例子是:
1.helper
package cn.learn.db.util;
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 final static string db_name ="test.db";//數據庫名
private final static int version = 1;//版本號
//自帶的構造方法
public dbhelper(context context, string name, cursorfactory factory,
int version) {
super(context, name, factory, version);
}
//為了每次構造時不用傳入dbname和版本號,自己得新定義一個構造方法
public dbhelper(context cxt){
this(cxt, db_name, null, version);//調用上面的構造方法
}
//版本變更時
public dbhelper(context cxt,int version) {
this(cxt,db_name,null,version);
}
//當數據庫創建的時候調用
public void oncreate(sqlitedatabase db) {
string sql = "create table student(" +
"id integer primary key autoincrement," +
"name varchar(20)," +
"age int)";
db.execsql(sql);
}
//版本更新時調用
public void onupgrade(sqlitedatabase db, int oldversion, int newversion) {
string sql = "update student ....";//自己的update操作
db.execsql(sql);
}
}
2.寫dao層
package cn.learn.db.dao;
import android.content.context;
import android.database.sqlite.sqlitedatabase;
import cn.learn.db.dao.domain.student;
import cn.learn.db.util.dbhelper;
public class studentdao {
dbhelper helper = null;
public studentdao(context cxt) {
helper = new dbhelper(cxt);
}
/**
* 當activity中調用此構造方法,傳入一個版本號時,系統會在下一次調用數據庫時調用helper中的onupgrade()方法進行更新
* @param cxt
* @param version
*/
public studentdao(context cxt, int version) {
helper = new dbhelper(cxt, version);
}
// 插入操作
public void insertdata(student stu) {
string sql = "insert into student (name,age)values(?,?)";
sqlitedatabase db = helper.getwritabledatabase();
db.execsql(sql, new object[] { stu.name, stu.age });
}
// 其它操作
}
完成這些,其它操作就簡單了....
另外,數據庫文件放在這個目錄