使用系统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();
}
}
}