简单使用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个按钮,分别表示我们的操作。如图:
首先我们要创建数据库,我们为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的基本使用方法。
附件为示例代码,仅供参考。