SQLite的使用

一、新建一个继承SQLiteOpenHelper的类
 会生成构造方法以及重写方法

 1 /**
 2  * 上下文、数据库名称、查询数据库系统默认游标工厂、数据库版本号
 3  */
 4 public DBOpenHelper(Context context,String name,CursorFactory factory,int version){
 5     super(context,"demo.db",null,1);
 6 }
 7 
 8 /**
 9  * 创建对象时会执行此方法
10  */
11 @Override
12 public void onCreate(SQLiteDatabase db){
13     db.execSQL("create table book (id integer primary key autoincrement,name varchar(20))");
14 }
15 
16 @Override
17 public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
18     //版本号有更新的时候调用
19 }

二、在调用的类中使用如下代码,数据库就会自动创建

1 DBOpenHelper helper = new DBOpenHelper(this);
2 helper.getReadableDatabase();

三、通常数据库操作会创建一个DAO类

 1 public DBDao(Context context){
 2     DBOpenHelper dbOpenHelper = new DBOpenHelper(context);
 3     //writable加锁操作数据库
 4     //dbOpenHelper.getReadableDatabase();
 5     //dbOpenHelper.getWritableDatabase();
 6 }
 7 
 8 /**
 9  * 增
10  */
11 public void add(String name){
12     SQLiteDatabase db = dbOpenHelper.getWriteDatabase();
13     if(db.isOpen()){
14         db.execSQL("insert into book(name) values(?)",new Object[]{name});
15         db.close();
16     }
17 }
18 
19 /**
20  * 删
21  */
22 public void delete(String name){
23     SQLiteDatabase db = dbOpenHelper.getWriteDatabase();
24     if(db.isOpen()){
25         db.execSQL("delete from book where name=?",new Object[]{name});
26         db.close();
27     }
28 }
29 
30 /**
31  * 改
32  */
33 public void update(String name,String newname){
34     SQLiteDatabase db = dbOpenHelper.getWriteDatabase();
35     if(db.isOpen()){
36         db.execSQL("update book set name=?,value=? where name=?",new Objec[]{name,newname});
37         db.close();
38     }
39 }
40 
41 /**
42  * 查
43  */
44 public void find(String name){
45     SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
46     if(db.isOpen()){
47         //返回结果集
48         Cursor cursor = db.rawQuery("select * from book where name=?",new String[]{name});
49         if(cursor.moveToFirst()){
50             //name在行中第几列
51             int index = cursor.getColumnIndex("name");
52             cursor.getString(index);
53         }
54         cursor.close();
55         db.close();
56         
57     }
58 }
59 
60 public List<Book> findAllList(){
61     SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
62     if(db.isOpen()){
63         Cursor cursor = db.rawQuery("select * from book",null);
64         while(cursor.moveToNext()){
65             int index = cursor.getColumnIndex("name");    
66             cursor.getString(index);
67         }
68         cursor.close();
69         db.close();
70     }
71 }

四、增删改查的另一种方式

 1 /**
 2  * 增
 3  */
 4 public void add(String name,String value){
 5     SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
 6     if(db.isOpen){
 7         ContentValues values = new ContentValues();
 8         values.put("name",name);
 9         values.put("value",value);
10         //表名、当values为空时,可以指定一个列名插入NULL值、参数
11         db.insert("book", "name",values);
12         db.close();
13     }
14 }
15 
16 /**
17  * 删
18  */
19 public void delete(String name){
20     SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
21     if(db.isOpen){
22         //表名、查询条件、值
23         db.delete("book","name=?",new String[]{"zs"});
24         db.close();
25     }
26 }
27 
28 /**
29  * 改
30  */
31 public void update(String name,String newname){
32     SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
33     if(db.isOpen){
34         ContentValues values = new ContentValues();
35         values.put("name",newname);
36         //
37         db.update("book",value,"name=?,age=?",new String[]{name});
38         db.close();
39     }
40 }
41 
42 /**
43  * 查
44  */
45 public void find(String name){
46     SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
47     if(db.isOpen()){
48         //表名、查询的列(null则为所有的列)、条件、条件的参数、分组group by、排序
49         Cursor cursor = db.query("book",new String[]{name},"name=?",new String[]{name},null,null);
50         if(cursor.moveToFirst()){
51                 
52         }
53         cursor.close();
54         db.close();
55     }
56 }

 五、事务的处理

 1 //开启事务
 2 try{
 3     db.beginTransaction();
 4     ...
 5     db.execSQL();
 6     ...
 7     //事务成功
 8     db.setTransactionSuccessful();
 9 }catch(Exception e){
10     
11 }finally{
12     db.endTransaction();
13     db.close();
14 }

 

posted @ 2013-04-03 12:58  轻云沉峰  阅读(233)  评论(0编辑  收藏  举报