您的位置:首页 > 移动开发 > Android开发

android之旅5 sqlite数据库相关

2015-12-24 22:51 375 查看
public class MyOpenHelper extends SQLiteOpenHelper{
public MyOpenHelper(Context c, String name, CursorFactory fac, int version){
super(c, name, factory, version); //name是数据库文件
}

//onCreate只在数据库第一次创建的时候调用
public void onCreate(SQLiteDatabase db){
db.execSQL("create table person(_id integer primary key autoincrement, name char(10), salary char(20), phone integer(20)) ");
}

//数据库升级的时候调用,其实就是new对象的时候设置版本号升高时
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){}

public static void main(String[] args){
MyOpenHelper oh = new MyOpenHelper(this, "people.db", null, 1);
// 不存在会有先创建数据库流程,数据库可读可写
// 和getReadableDatabase差别是空间满readable返回只读库
SQLiteDatabase db = oh.getWritableDatabase();

//SQLite底层只有字符串,因此类型不符合也没事。但别数字字段插abc
db.execSQL("insert into person(name, salary,phone) values(?,?,?)",new Object[]{"name","1200",181200});
db.close();
}

public static void select(){
// 查询和增删改API不一样
Cursor cursor = db.rawQuery("select name,salary form person", null);
while(cursor.moveToNext()){
//底层都是字符串
String name = cursor.getString(cursor.getColumnIndex("name"));
String salary = cursor.getString(cursor.getColumnIndex("salary"));

//.....其他业务逻辑
}
}

//自带API操作数据库, 内部还是拼字符串的,减少自己拼串错误
public static sqliteOperByApi(){
MyOpenHelper helper = new MyOpenHelper(this, "person.db", null, 1);
SQLiteDatabase db = helper.getWritableDatabase();

//插入
ContentValues cv = new ContentValues();
cv.put("name", "name");
cv.put("phone", "122333");
// 表明,null,键值, 插入失败返回-1,成功返回主键
db.insert("person", null, cv);

//删除,返回影响的行数
db.delete("person", "name=? and _id=?", new Object[]{"name", 3});

//修改
ContentValues cv = new ContentValues();
cv.put("salary", 26000);
db.update("person", values, "name=?", new Object[]{"name"});

//查询
Cursor cursor = db.query("person", null, null, null, null, null, null, null);
while(cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("name"));
//.....业务逻辑
}

// 事务处理
db.beginTransction();
/*数据库操作*/
db.setTransactionSuccessful();//设置事务OK
//setTransactionSuccessful没执行,end会回滚;
//setTransactionSuccessful执行了,end会关闭事务并提交
db.endTransaction();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: