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(); } }
相关文章推荐
- Android-Spelling Checker Framework
- Android中Parcelable接口(进行序列化)用法
- broadcast广播-Android
- Android四大组件之Content Provider
- Android编程技巧之随意从当前Activity退出应用
- android解决ScrollView嵌套ListView不能下拉刷新
- android部分控件如何获取到输入的值
- Android XML解析器 - PUll
- 使用AndroidAnnotations框架优雅地实现ListView功能例子
- Android上使用OpenCV处理图像
- Android 人名 随机抽奖
- Android-Creating an Input Method(IME)
- 练手Android应用
- Android Activity页面加载时间性能分析,以及改进要点
- How to add a new key on android
- 读Android学Java基础之按位操作符
- Android自助餐之文件存储
- 事件监听:诀别Android繁琐的事件注册机制——view.setOnXXXXListener
- Android Studio上手,基于VideoView的本地文件及流媒体播放器
- Android属性动画深入分析:让你成为动画牛人