SQLite是一款轻型数据库,它设计目的是嵌入式,占用资源少,在嵌入式设备中,只要几百kb内存就足够。它又如下特征:
-
- 轻量级
- 独立性
- 隔离性
- 跨平台
- 多语言接口
- 安全性
SQLite数据库的操作一般包括:创建数据库、打开数据库、创建表、向表中添加数据、从表中删除数据、修改表中数据、关闭数据库、删除指定表、删除数据库、查询表中的某条数据。。
在开发过程中,为了能够更好的管理和维护数据库,我们要封装一个继承自SQLiteOpenHelper类的数据库操作类。SQLiteOpenHelper的构造方法中分别需要传入Context、数据库名称、CursorFactory(一般传入null,否则为默认数据库)、数据库版本号(不能为负数)。在SQLiteOpenHelper中首先会执行的是onCreate方法(数据库第一次被创建时)。当然,在构造函数时并没有真正的创建数据库,而是调用getWritableDatabase或者getReadableDatabase方法才真正的去创建数据库,并返回一个SQLiteDatabase对象。助手类DatabaseHelper代码入下:


1 package com.hanfeng.helper;
2
3 import android.R.string;
4 import android.content.Context;
5 import android.database.sqlite.SQLiteDatabase;
6 import android.database.sqlite.SQLiteOpenHelper;
7 import android.database.sqlite.SQLiteDatabase.CursorFactory;
8
9 public class DatabaseHelper extends SQLiteOpenHelper{
10
11 private static final int VERSION = 1;
12
13 public DatabaseHelper(Context context, String name, CursorFactory factory,
14 int version) {
15 super(context, name, factory, version);
16 // TODO Auto-generated constructor stub
17 }
18 public DatabaseHelper(Context context,String name) {
19 this(context, name, VERSION);
20 }
21 public DatabaseHelper(Context context,String name,int version) {
22 this(context, name,null,version);
23 }
24
25
26 @Override
27 public void onCreate(SQLiteDatabase db) {
28 // TODO Auto-generated method stub
29 System.out.println("create a Database");
30 db.execSQL("create table user(id int,name varchar(20))");
31 }
32
33 @Override
34 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
35 // TODO Auto-generated method stub
36 System.out.println("update a Database");
37 }
38
39 }
2
3 import android.R.string;
4 import android.content.Context;
5 import android.database.sqlite.SQLiteDatabase;
6 import android.database.sqlite.SQLiteOpenHelper;
7 import android.database.sqlite.SQLiteDatabase.CursorFactory;
8
9 public class DatabaseHelper extends SQLiteOpenHelper{
10
11 private static final int VERSION = 1;
12
13 public DatabaseHelper(Context context, String name, CursorFactory factory,
14 int version) {
15 super(context, name, factory, version);
16 // TODO Auto-generated constructor stub
17 }
18 public DatabaseHelper(Context context,String name) {
19 this(context, name, VERSION);
20 }
21 public DatabaseHelper(Context context,String name,int version) {
22 this(context, name,null,version);
23 }
24
25
26 @Override
27 public void onCreate(SQLiteDatabase db) {
28 // TODO Auto-generated method stub
29 System.out.println("create a Database");
30 db.execSQL("create table user(id int,name varchar(20))");
31 }
32
33 @Override
34 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
35 // TODO Auto-generated method stub
36 System.out.println("update a Database");
37 }
38
39 }
下面我们可以在Activity中自由轻松的操作数据库啦!代码如下:


1 package com.hanfeng.activity;
2
3 import com.hanfeng.activity.R.id;
4 import com.hanfeng.helper.DatabaseHelper;
5
6 import android.app.Activity;
7 import android.content.ContentValues;
8 import android.database.Cursor;
9 import android.database.sqlite.SQLiteDatabase;
10 import android.os.Bundle;
11 import android.view.View;
12 import android.view.View.OnClickListener;
13 import android.widget.Button;
14
15 public class SQLiteActivity extends Activity {
16 //数据库名
17 private static String DATABASE_NAME = "sqlite_test_db";
18 //声明Button控件
19 private Button createButton;
20 private Button deleteButton;
21 private Button updateButton;
22 private Button insertButton;
23 private Button deleteDBButton;
24 private Button updateDBButton;
25 private Button queryDBButton;
26
27 /** Called when the activity is first created. */
28 @Override
29 public void onCreate(Bundle savedInstanceState) {
30 super.onCreate(savedInstanceState);
31 setContentView(R.layout.main);
32
33 //获得Button对象
34 createButton = (Button)findViewById(R.id.createButton);
35 deleteButton = (Button)findViewById(R.id.deleteButton);
36 updateButton = (Button)findViewById(R.id.updateButton);
37 insertButton = (Button)findViewById(R.id.insertDBButton);
38 deleteDBButton = (Button)findViewById(R.id.deleteDBButton);
39 updateDBButton = (Button)findViewById(R.id.updateDBButton);
40 queryDBButton = (Button)findViewById(R.id.queryDBButton);
41
42 //设置Buton监听器
43 createButton.setOnClickListener(new CreateOnClickListener());
44 deleteButton.setOnClickListener(new DeleteOnClickListener());
45 updateButton.setOnClickListener(new UpdateOnClickListener());
46 insertButton.setOnClickListener(new InsetOnClickListener());
47 deleteDBButton.setOnClickListener(new DeleteDbOnClickListener());
48 updateDBButton.setOnClickListener(new UpdateDbOnClickListener());
49 queryDBButton.setOnClickListener(new QueryOnClickListener());
50 }
51 /*监听创建数据库按钮*/
52 class CreateOnClickListener implements OnClickListener{
53 @Override
54 public void onClick(View v) {
55 // TODO Auto-generated method stub
56 //创建DatabaseHelper对象
57 DatabaseHelper dHelper = new DatabaseHelper(SQLiteActivity.this,DATABASE_NAME);
58 //调用DatabaseHelper对象的getReadableDatabase方法,才能够创建数据库
59 SQLiteDatabase db = dHelper.getReadableDatabase();
60 }
61 }
62 /*监听删除数据库按钮*/
63 class DeleteOnClickListener implements OnClickListener{
64 @Override
65 public void onClick(View v) {
66 // TODO Auto-generated method stub
67 //调用方法删除数据库
68 DeleteDataBase();
69 }
70 }
71 /*监听更新数据库按钮*/
72 class UpdateOnClickListener implements OnClickListener{
73 @Override
74 public void onClick(View v) {
75 // TODO Auto-generated method stub
76 //创建DatabaseHelper对象
77 DatabaseHelper dHelper = new DatabaseHelper(SQLiteActivity.this,DATABASE_NAME,2);
78 //调用DatabaseHelper对象的getReadableDatabase方法,才能够创建数据库
79 SQLiteDatabase db = dHelper.getReadableDatabase();
80 }
81 }
82 /*监听插入一条数据按钮*/
83 class InsetOnClickListener implements OnClickListener{
84 @Override
85 public void onClick(View v) {
86 /*生成ContentValues对象, cValues.put(key, value);
87 *ContentValues相当于一个Map,key值的字段名称,value是字段的值
88 **/
89 ContentValues cValues = new ContentValues();
90 //想该对象当中插入键值对,其中键是列名,值是希望插入到这一列的值,值必须和数据库当中的数据类型一致
91 cValues.put("id", 1);
92 cValues.put("name", "zhangsan");
93 DatabaseHelper dHelper = new DatabaseHelper(SQLiteActivity.this, DATABASE_NAME,2);
94 SQLiteDatabase db = dHelper.getWritableDatabase();
95 //调用insert方法,就可以将数据插入到数据库当
96 db.insert("user", null, cValues);
97 System.out.println("insert a Database");
98 System.out.println("插入数据"+cValues);
99 }
100 }
101 /*监听删除一条数据按钮*/
102 class DeleteDbOnClickListener implements OnClickListener{
103 @Override
104 public void onClick(View v) {
105 // TODO Auto-generated method stub
106 DatabaseHelper dHelper = new DatabaseHelper(SQLiteActivity.this, DATABASE_NAME,2);
107 SQLiteDatabase db = dHelper.getWritableDatabase();
108 //第一个参数是要更新的表名
109 //第二个参数是一个ContentValeus对象
110 //第三个参数是where子
111 db.delete("user", "id=?", new String[] {"2"});
112 System.out.println("delete a db database");
113 }
114 }
115 /*监听更新一条数据按钮*/
116 class UpdateDbOnClickListener implements OnClickListener{
117 @Override
118 public void onClick(View v) {
119 // TODO Auto-generated method stub
120 DatabaseHelper dHelper = new DatabaseHelper(SQLiteActivity.this,DATABASE_NAME);
121 SQLiteDatabase db = dHelper.getWritableDatabase();
122 ContentValues cValues = new ContentValues();
123 cValues.put("name", "lisi");
124 db.update("user", cValues, "id=?", new String[] {"1"});
125 System.out.println("update a db database");
126 }
127 }
128 /*监听查询一条数据按钮*/
129 class QueryOnClickListener implements OnClickListener{
130
131 @Override
132 public void onClick(View v) {
133 // TODO Auto-generated method stub
134 DatabaseHelper dHelper = new DatabaseHelper(SQLiteActivity.this,DATABASE_NAME);
135 SQLiteDatabase db = dHelper.getWritableDatabase();
136 Cursor cursor = db.query("user", new String[] {"id","name"}, "id=?", new String[] {"1"}, null, null, null);
137 while (cursor.moveToNext()) {
138 String name = cursor.getString(cursor.getColumnIndex("name"));
139 System.out.println("查询结果"+name);
140 }
141 }
142 }
143 /*删除数据库*/
144 public void DeleteDataBase() {
145 //直接调用deleteDatabase方法删除数据库
146 this.deleteDatabase(DATABASE_NAME);
147 System.out.println("delete a Database");
148 /*删除数据库后,退出activity*/
149 //this.finish();
150 }
151 }
2
3 import com.hanfeng.activity.R.id;
4 import com.hanfeng.helper.DatabaseHelper;
5
6 import android.app.Activity;
7 import android.content.ContentValues;
8 import android.database.Cursor;
9 import android.database.sqlite.SQLiteDatabase;
10 import android.os.Bundle;
11 import android.view.View;
12 import android.view.View.OnClickListener;
13 import android.widget.Button;
14
15 public class SQLiteActivity extends Activity {
16 //数据库名
17 private static String DATABASE_NAME = "sqlite_test_db";
18 //声明Button控件
19 private Button createButton;
20 private Button deleteButton;
21 private Button updateButton;
22 private Button insertButton;
23 private Button deleteDBButton;
24 private Button updateDBButton;
25 private Button queryDBButton;
26
27 /** Called when the activity is first created. */
28 @Override
29 public void onCreate(Bundle savedInstanceState) {
30 super.onCreate(savedInstanceState);
31 setContentView(R.layout.main);
32
33 //获得Button对象
34 createButton = (Button)findViewById(R.id.createButton);
35 deleteButton = (Button)findViewById(R.id.deleteButton);
36 updateButton = (Button)findViewById(R.id.updateButton);
37 insertButton = (Button)findViewById(R.id.insertDBButton);
38 deleteDBButton = (Button)findViewById(R.id.deleteDBButton);
39 updateDBButton = (Button)findViewById(R.id.updateDBButton);
40 queryDBButton = (Button)findViewById(R.id.queryDBButton);
41
42 //设置Buton监听器
43 createButton.setOnClickListener(new CreateOnClickListener());
44 deleteButton.setOnClickListener(new DeleteOnClickListener());
45 updateButton.setOnClickListener(new UpdateOnClickListener());
46 insertButton.setOnClickListener(new InsetOnClickListener());
47 deleteDBButton.setOnClickListener(new DeleteDbOnClickListener());
48 updateDBButton.setOnClickListener(new UpdateDbOnClickListener());
49 queryDBButton.setOnClickListener(new QueryOnClickListener());
50 }
51 /*监听创建数据库按钮*/
52 class CreateOnClickListener implements OnClickListener{
53 @Override
54 public void onClick(View v) {
55 // TODO Auto-generated method stub
56 //创建DatabaseHelper对象
57 DatabaseHelper dHelper = new DatabaseHelper(SQLiteActivity.this,DATABASE_NAME);
58 //调用DatabaseHelper对象的getReadableDatabase方法,才能够创建数据库
59 SQLiteDatabase db = dHelper.getReadableDatabase();
60 }
61 }
62 /*监听删除数据库按钮*/
63 class DeleteOnClickListener implements OnClickListener{
64 @Override
65 public void onClick(View v) {
66 // TODO Auto-generated method stub
67 //调用方法删除数据库
68 DeleteDataBase();
69 }
70 }
71 /*监听更新数据库按钮*/
72 class UpdateOnClickListener implements OnClickListener{
73 @Override
74 public void onClick(View v) {
75 // TODO Auto-generated method stub
76 //创建DatabaseHelper对象
77 DatabaseHelper dHelper = new DatabaseHelper(SQLiteActivity.this,DATABASE_NAME,2);
78 //调用DatabaseHelper对象的getReadableDatabase方法,才能够创建数据库
79 SQLiteDatabase db = dHelper.getReadableDatabase();
80 }
81 }
82 /*监听插入一条数据按钮*/
83 class InsetOnClickListener implements OnClickListener{
84 @Override
85 public void onClick(View v) {
86 /*生成ContentValues对象, cValues.put(key, value);
87 *ContentValues相当于一个Map,key值的字段名称,value是字段的值
88 **/
89 ContentValues cValues = new ContentValues();
90 //想该对象当中插入键值对,其中键是列名,值是希望插入到这一列的值,值必须和数据库当中的数据类型一致
91 cValues.put("id", 1);
92 cValues.put("name", "zhangsan");
93 DatabaseHelper dHelper = new DatabaseHelper(SQLiteActivity.this, DATABASE_NAME,2);
94 SQLiteDatabase db = dHelper.getWritableDatabase();
95 //调用insert方法,就可以将数据插入到数据库当
96 db.insert("user", null, cValues);
97 System.out.println("insert a Database");
98 System.out.println("插入数据"+cValues);
99 }
100 }
101 /*监听删除一条数据按钮*/
102 class DeleteDbOnClickListener implements OnClickListener{
103 @Override
104 public void onClick(View v) {
105 // TODO Auto-generated method stub
106 DatabaseHelper dHelper = new DatabaseHelper(SQLiteActivity.this, DATABASE_NAME,2);
107 SQLiteDatabase db = dHelper.getWritableDatabase();
108 //第一个参数是要更新的表名
109 //第二个参数是一个ContentValeus对象
110 //第三个参数是where子
111 db.delete("user", "id=?", new String[] {"2"});
112 System.out.println("delete a db database");
113 }
114 }
115 /*监听更新一条数据按钮*/
116 class UpdateDbOnClickListener implements OnClickListener{
117 @Override
118 public void onClick(View v) {
119 // TODO Auto-generated method stub
120 DatabaseHelper dHelper = new DatabaseHelper(SQLiteActivity.this,DATABASE_NAME);
121 SQLiteDatabase db = dHelper.getWritableDatabase();
122 ContentValues cValues = new ContentValues();
123 cValues.put("name", "lisi");
124 db.update("user", cValues, "id=?", new String[] {"1"});
125 System.out.println("update a db database");
126 }
127 }
128 /*监听查询一条数据按钮*/
129 class QueryOnClickListener implements OnClickListener{
130
131 @Override
132 public void onClick(View v) {
133 // TODO Auto-generated method stub
134 DatabaseHelper dHelper = new DatabaseHelper(SQLiteActivity.this,DATABASE_NAME);
135 SQLiteDatabase db = dHelper.getWritableDatabase();
136 Cursor cursor = db.query("user", new String[] {"id","name"}, "id=?", new String[] {"1"}, null, null, null);
137 while (cursor.moveToNext()) {
138 String name = cursor.getString(cursor.getColumnIndex("name"));
139 System.out.println("查询结果"+name);
140 }
141 }
142 }
143 /*删除数据库*/
144 public void DeleteDataBase() {
145 //直接调用deleteDatabase方法删除数据库
146 this.deleteDatabase(DATABASE_NAME);
147 System.out.println("delete a Database");
148 /*删除数据库后,退出activity*/
149 //this.finish();
150 }
151 }
项目运行过程截图如下:
LOG输出如下:
adb shell 下命令如下: