一、使用SQLiteOpenHelper類需要以下幾個類
可以用JDBC相關(guān)數(shù)據(jù)庫操作類進(jìn)行類比
- SQLiteOpenHelper--創(chuàng)建打開連接數(shù)據(jù)庫纽窟;
- SQLiteDatabase--PreparedStatement娄柳,通過這個類進(jìn)行數(shù)據(jù)庫的增刪改查俏扩;
- Cursor--ResultSet篮幢,查詢時(shí)返回的數(shù)據(jù)集,根據(jù)這個類遍歷查詢結(jié)果淀弹;
- ContentValue類,包裝了HashMap類庆械,該類用于存儲鍵-值對的數(shù)據(jù)
每個鍵-值對數(shù)據(jù)表示相應(yīng)表中的列名和該列的數(shù)據(jù)
鍵-->列名
值-->列值
二薇溃、繼承SQLiteOpenHelper類,打開創(chuàng)建數(shù)據(jù)庫
class MyDatabaseHelp extends SQLiteOpenHelper{
public MyDatabaseHelp(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
String sql="create table person(id integer primary key autoincrement," +
"name varchar(20)," +
"age integer)";
sqLiteDatabase.execSQL(sql);
Log.i("dayang","onCreate----------");
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
String sql="create table person(id integer primary key autoincrement," +
"name varchar(20)" +
"age integer)";
sqLiteDatabase.execSQL(sql);
}
}
在創(chuàng)建SQLiteDatabase類時(shí)缭乘,會創(chuàng)建數(shù)據(jù)庫
MyDatabaseHelp help=new MyDatabaseHelp(this,"dayang",null,1);
SQLiteDatabase db=help.getReadableDatabase();
三沐序、使用SQLiteDatabase類操作數(shù)據(jù)庫
可以使用SQLiteDatabase類的execSQL(String sql)方法來執(zhí)行sql語句
1.查詢
也可以使用SQLiteDatabase類rawQuery()方法代替下面的查詢
String sql ="select * from person";
db.rawQuery(sql,null);
MyDatabaseHelp help=new MyDatabaseHelp(this,"dayang",null,1);
SQLiteDatabase db=help.getWritableDatabase();
Cursor cursor=db.query("person",null,null,null,null,null,null);
while(cursor.moveToNext()){
Log.i("dayang","id="+cursor.getString(cursor.getColumnIndex("id")));
Log.i("dayang","name="+cursor.getString(cursor.getColumnIndex("name")));
Log.i("dayang","age"+cursor.getString(cursor.getColumnIndex("age")));
}
2.插入
ContentValue類保存要插入的數(shù)據(jù)
相應(yīng)的sql語句
insert into student(name,age) values('zhaoran','27');
MyDatabaseHelp help=new MyDatabaseHelp(this,"dayang",null,1);
SQLiteDatabase db=help.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("name","zhaoran");//name對應(yīng)person表中的name列
values.put("age",27);//age對應(yīng)person表中的age列
long i= db.insert("person",null,values);//返回的是插入數(shù)據(jù)的位置
Log.i("dayang","插入的位置"+i);
3.更新
MyDatabaseHelp help=new MyDatabaseHelp(this,"dayang",null,1);
SQLiteDatabase db=help.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("name","dayu");
int n=db.update("person",values,"id=?",new String[]{"3"});
Log.i("dayang","返回影響數(shù)據(jù)行數(shù):"+n);
4.刪除
MyDatabaseHelp help=new MyDatabaseHelp(this,"dayang",null,1);
SQLiteDatabase db=help.getWritableDatabase();
int n=db.delete("person","id=?",new String[]{"6"});
Log.i("dayang","影響的行數(shù)"+n);