使用系統api實現數據庫的增刪改查好處
1:不容易出錯
2:能知道返回結果
1:創建數據庫
public class NewPerSonDb extends SQLiteOpenHelper {
/**
* 創建一個數據庫 context 爲上下問, name數據庫名字要包含後綴 ,factory默認爲null表示用系統的 version數據庫版本
*
* @param context
* @param name
* @param factory
* @param version
*/
public NewPerSonDb(Context context) {
// 當數據版本號大於原始值時纔會調用onUpgrade
super(context, "person.db", null, 3);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table person (id integer ,name varchar(20),number varchar(20))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("alter table person add account varchar(20)");
}
}
2:管理數據庫
Cursor cursorb = db.query("person", null, "name=" + "'" + name + "'",
null, null, null, null);
Boolean dbBoolean = cursor.moveToNext();
cursor.close();
db.close();
return dbBoolean;
}
public int update(String name, String number) {
SQLiteDatabase db = helPerSonDb.getWritableDatabase();
// db.execSQL("update person set number=? where name=?", new Object[] {
// number, name });
ContentValues values = new ContentValues();
values.put("number", number);
int type = db.update("person", values, "name=?", new String[] { name });
// 大於等於1成功
db.close();
return type;
}
public int delete(String name) {
SQLiteDatabase db = helPerSonDb.getWritableDatabase();
// db.execSQL("delete from person where name=?", new Object[] { name });
int type = db.delete("person", "name=?", new String[] { name });
// 大於等於1成功
db.close();
return type;
}
public List findAlll() {
SQLiteDatabase db = helPerSonDb.getReadableDatabase();
ArrayList persons = new ArrayList();
// Cursor cursor = db.rawQuery("select * from person ", null);
// ACS從小到大排序 DESC從大到小排序
Cursor cursor = db.query("person", null, null, null, null, null, null);
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex("id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String number = cursor.getString(cursor.getColumnIndex("number"));
Person person = new Person(id, name, number);
persons.add(person);
}
cursor.close();
db.close();
return persons;
}
// 數據庫事物
public void testAccount() {
add("lsq", "123456", 1000);
add("dxy", "888888", 2000);
}
String ssString = null;
public void testTransAccount() {
SQLiteDatabase db = helPerSonDb.getWritableDatabase();
db.beginTransaction();
try {
db.execSQL("update person set account=account-100 where name=?",
new Object[] { "lsq" });
ssString.equals("dd");
db.execSQL("update person set account=account+100 where name=?",
new Object[] { "dxy" });
db.setTransactionSuccessful();
} catch (Exception e) {
Log.v("ceshi","轉賬失敗!");
} finally {
db.endTransaction();
db.close();
}
}
}