简单使用Android内置SQLite数据库


SQLite介绍




SQLite数据库就像它的名字一样,它是一个很小的关系型数据库,但它基本拥有一般的关系型数据库的基本功能,这对于手机而言,已经不错了,也是手机数据库的比较好的选择。


SQLiteOpenHelper使用方法




SQLiteOpenHelper是一个抽象助手类,我们要使用它,必须继承他,然后必须Override两个回调函数(onCreate和onUpgrade)和一个构造函数。

当创建了SQLiteOpenHelper子类的对象之后,该对象就有了getReadableDatabase()和getWritableDatabase()两个方法,通过这两个方法就能够得到SQLiteDatabase的对象,就可以对数据库进行操作了。





我们需要创建一个继承SQLiteOpenHelper的类,如下代码:



1. publicclass DBHelper extends
2. privatestaticfinalint VERSION = 1; 
3. public
4. int
5. super(context, name, factory, version); 
6. // TODO Auto-generated constructor stub
7. } 
8. public DBHelper(Context context, String name,int
9. super(context, name, null, version); 
10. } 
11. public
12. super(context, name, null, VERSION); 
13. } 
14. @Override
15. publicvoid
16. // TODO Auto-generated method stub
17. System.out.println("Create!!!"); 
18. db.execSQL("create table user(id int,name varchar(20),age int)"); 
19. } 
20. @Override
21. publicvoid onUpgrade(SQLiteDatabase db, int oldV, int
22. // TODO Auto-generated method stub
23. System.out.println("Update!!!"); 
24. } 
25. }

代码中实现了3个构造函数,含有4个参数的是必须实现的构造函数,3个参数的主要用于数据库版本的修改,2个参数的用于初始数据库的建立。同时实现了两个回调函数,onCreate是在这个数据库首次被建立的时候,会执行的回调函数,因此,我们在这个函数里创建我们想要的数据表,而onUpgrade回调函数是在数据库版本更新的时候需要执行的函数。





创建更新数据库,增删改查等操作




我们先建立一个Activity,上面有6个按钮,分别表示我们的操作。如图:


android lame库使用 androidhelper库使用_数据库

首先我们要创建数据库,我们为createDB按钮绑定事件,代码如下:


1. Button createDB = (Button)findViewById(R.id.createdb); 
2. createDB.setOnClickListener(new
3. @Override
4. publicvoid
5. // TODO Auto-generated method stub
6. DBHelper dbHelper = new DBHelper(SQLiteDemoActivity.this,"test_db");//创建DBHelper的对象
7. SQLiteDatabase db = dbHelper.getReadableDatabase();//得到SQLiteDatabase对象,并调用DBHelper中的回调函数onCreate,创建test_db为名字数据库和建立一个user表
8. } 
9. });

修改数据库版本,对按钮绑定监听器,代码如下:


1. Button updateDB = (Button)findViewById(R.id.updatedb); 
2. updateDB.setOnClickListener(new
3. @Override
4. publicvoid
5. // TODO Auto-generated method stub
6. DBHelper dbHelper = new DBHelper(SQLiteDemoActivity.this,"test_db",2); //创建DBHelper的对象,使用的是3个参数的构造函数
7. SQLiteDatabase db = dbHelper.getReadableDatabase(); 
8. } 
9. });

代码创建DBHelper的对象,使用的是3个参数的构造函数,由于数据库已存在,所以会执行onUpgrade的回调函数,来对数据库的版本进行修改。


Insert操作

对Insert按钮绑定监听器,代码如下:



1. Button insert = (Button)findViewById(R.id.insert); 
2. insert.setOnClickListener(new
3. @Override
4. publicvoid
5. // TODO Auto-generated method stub
6. ContentValues value = new
7. value.put("id", 3); 
8. value.put("name","Alice"); 
9. value.put("age", 14); 
10. DBHelper dbHelper = new DBHelper(SQLiteDemoActivity.this,"test_db"); 
11. SQLiteDatabase db = dbHelper.getWritableDatabase(); 
12. db.insert("user", null, value); 
13. } 
14. });

首先创建了ContentValue对象,里面放的是键值对,键对应表中的列名,值就是该列的值。然后用同样的方法创建DBHelper对象,由于是写入数据,所以就dbHelper调用getWritableDatabase()方法来得到一个可写入的SQLiteDatabase对象,然后调用该对象的insert方法将数据插入。





Update操作

对update按钮绑定监听器,代码如下:



1. Button update = (Button)findViewById(R.id.update); 
2. update.setOnClickListener(new
3. @Override
4. publicvoid
5. // TODO Auto-generated method stub
6. ContentValues value = new
7. value.put("age", 17); 
8. DBHelper dbHelper = new DBHelper(SQLiteDemoActivity.this,"test_db"); 
9. SQLiteDatabase db = dbHelper.getWritableDatabase(); 
10. db.update("user",value,"id=?",new String[]{"3"}); 
11. } 
12. });

上面代码的目的是将Alice的年龄从14岁改为17岁,这里同样创建一个ContentValues的对象,用来存储需要改变的属性的键值对,同样得到一个可写入的SQLiteDatabase对象,然后使用update方法进行修改。Update函数有四个参数,第一个为要修改的表名,第二个为需要修改的键值对ContentValues对象,第3和第4可以看成是where子句,其中?为占位符,后面的String数组中与前面的键一一对应。上面的代码即表示为“where id=3”。





Delete删除操作

对delete按钮绑定监听器,代码如下:



1. Button delete = (Button)findViewById(R.id.delete); 
2. delete.setOnClickListener(new
3. @Override
4. publicvoid
5. // TODO Auto-generated method stub
6. DBHelper dbHelper = new DBHelper(SQLiteDemoActivity.this,"test_db"); 
7. SQLiteDatabase db = dbHelper.getWritableDatabase(); 
8. db.delete("user","id=?",new String[]{"3"}); 
9. } 
10. });

上面代码的目的是将Alice删除,这里同样得到一个可写入的SQLiteDatabase对象,然后使用delete方法进行修改。delete函数有3个参数,第一个为要修改的表名,第2和第3可以看成是where子句,其中?为占位符,后面的String数组中与前面的键一一对应。上面的代码即表示为“where id=3”。





Query查询操作

对query按钮绑定监听器,代码如下:




1. Button query = (Button)findViewById(R.id.query); 
2. query.setOnClickListener(new
3. @Override
4. publicvoid
5. // TODO Auto-generated method stub
6. DBHelper dbHelper = new DBHelper(SQLiteDemoActivity.this,"test_db"); 
7. SQLiteDatabase db = dbHelper.getReadableDatabase(); 
8. Cursor cursor = db.query("user", new String[]{"name","age"}, "id=?",new String[]{"2"}, null,null, null); 
9. while(cursor.moveToNext()){ 
10. System.out.println(cursor.getString(cursor.getColumnIndex("name"))+cursor.getString(cursor.getColumnIndex("age"))); 
11. } 
12. } 
13. });

代码是要查得id=2的name和age,首先还是得到一个可读的SQLiteDatabase对象,然后使用query方法来得到一个游标来遍历数据表,这个query方法有很多参数,可以这么解释query(表名,所要查的列名组成的字符串数组,where子句的前半部分,where子句的后半部分值,groupby子句,having子句,orderby子句),通过这个方法会返回一个Cursor对象,然后用while循环来遍历数据表。


以上就是SQLite的基本使用方法。

附件为示例代码,仅供参考。