標籤:
SQLiteOpenHelper的使用:
首先聲明一個DatabaseHelper類,這個類繼承於SQLiteOpenHelper類,首先得有建構函式,聲明DatabaseHelper類如下:
//DatabaseHelper作為一個訪問SQLite的助手類,提供兩個方面的功能
//第一,getReadableDatabase(),getWriteableDatabase()可以獲得SQLiteDatabase對象,通過該對象對資料庫進行操作
//第二,提供了onCreate()和onUpgrade()兩個回呼函數,允許我們在建立和升級資料庫時,進行自己的操作
public class DatabaseHelper extends SQLiteOpenHelper{
//在SQLiteOpenHelper的子類當中,必須有該建構函式
//context為一個Activity對象,name表的名字,version資料庫的版本
private static final int VERSION = 1;
public DatabaseHelper(Context context, String name, CursorFactory factory,int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
public DatabaseHelper(Context context,String name){
//調用含三個參數的建構函式,即下一個自訂的建構函式
this(context,name,VERSION);
}
public DatabaseHelper(Context context,String name,int version){
//調用系統的建構函式,只不過給factory傳入的值為空白
this(context,name,null,version);
}
//該函數是在第一次建立資料庫的時候執行,實際上是第一次得到SQLiteDatabase對象的時候,才會調用該方法
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
//execSQL函數用於執行SQL語句
db.execSQL("create table user(id int,name varchar(20))");
//Log.d("myDebug", "My first Debug");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
如下定義了增刪改查SQLite資料庫的按鈕的監聽事件:
class SQLButtonListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(v.getId() == R.id.createDatabase){
//建立資料庫,首次調用則執行onCreate方法
DatabaseHelper dbHelper = new DatabaseHelper(OtherActivity.this,"test_zhanglei_db");
SQLiteDatabase db = dbHelper.getReadableDatabase();
}
else if(v.getId() == R.id.updataDatabase){
//更新當前資料庫的版本號碼
DatabaseHelper dbHelper = new DatabaseHelper(OtherActivity.this,"test_zhanglei_db",2);
}
else if(v.getId() == R.id.insertDatabase){ //插入按鈕
//產生ContentValue對象
ContentValues values = new ContentValues();
//向該對象中插入索引值對,其中鍵是列名,值是希望插入的這一列的值,值必須與資料庫的列的類型一致
values.put("id", 1);
values.put("name", "zhangsan");
DatabaseHelper dbHelper = new DatabaseHelper(OtherActivity.this,"test_zhanglei_db",2);
SQLiteDatabase db = dbHelper.getWritableDatabase();
//調用insert方法,就可以將資料插入到資料庫當中
db.insert("user", null, values);
}
else if(v.getId() == R.id.updatatable){ //更新按鈕
//UPDATE table_name set XXCOL=xxx WHERE XXCOL=XX
DatabaseHelper dbHelper = new DatabaseHelper(OtherActivity.this,"test_zhanglei_db",2);
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "zhangsanfeng");
//第一個參數是更新的表名,第二個參數是一個ContentValues對象,第三個參數是where子句,?表示預留位置,?有幾個後面 的new String中就有幾個參數
db.update("user", values, "id=?", new String[]{("1")});
}
else if(v.getId() ==R.id.queryDatabase){ //查詢按鈕
DatabaseHelper dbHelper = new DatabaseHelper(OtherActivity.this,"test_zhanglei_db",2);
SQLiteDatabase db = dbHelper.getReadableDatabase();
//表名,查詢列名,where之後的子句,selection的參數,分組(groupby),分組的限制(Having),結果的排序(OrderBy)
Cursor cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null);
while(cursor.moveToNext()){
//getString(1)中的參數是表中的列名
String name = cursor.getString(cursor.getColumnIndex("name"));
textView.setText(textView.getText()+name);
}
}
}
}
SQLite關係型資料庫