SQLite3 特征
和传统关系数据库比较
有的:
Sql 语句: SELECT INSERT UPDATE
CREATE DROP
数据类型:
不区分大小写
TEXT 文本
NUMERIC 数值
INTEGER 整型
REAL 小数
NONE 无类型
没有的:
FOREIGN KEY 外键约束
RIGHT OUTER JOIN 和 FULL OUTER JOIN
ALTER TABLE
开始动手
动手之前,确认你的机器中已经配置好如下环境:
Android 开发环境(怎么配置问 Google ,有很多)
本文档适用环境 Android 1.0
1, 建库
方式一:命令行方式(适合调试用)
可以使用 adb shell 进入设备后台,命令行方式手动创建,步骤如下:
Eclipse 中启动模拟器之后, cmd 下输入进入设备 Linux 控制台
D:\>adb shell
之后进入应用 data 目录
# cd /data/data
ls 列表目录,查看文件,找到你的项目目录并进入
查看有无 databases 目录,如果没有,则创建一个
# mkdir databases
cd databases 进入并创建数据库
# sqlite3 friends.db
sqlite3 friends.db
SQLite version 3.5.9
Enter ".help" for instructions
sqlite>
ctrl+d 退出 sqlite 提示符 ls 列表目录会看到有一个文件被创建 friends.db
他就是 SQLite 的库文件
# ls
ls
friends.db
方式二:编码方式(使用更多)
android.content.Context 中提供了函数 , 注: Activity 是 Context 的子类
openOrCreateDatabase () 来创建我们的数据库
db = context .openOrCreateDatabase(
String DATABASE_NAME , int Context. MODE_PRIVATE , null );
String DATABASE_NAME 数据库的名字
Int MODE 操作模式 Context.MODE_PRIVATE 等
CursorFactory 指针工厂 ,本例中传入 null ,暂不用
2, 建表
命令行方式
# sqlite3
sqlite> create table widgets (id integer primary key autoincrement,name text);
3, 插入数据
命令行 增加,查询数据
sqlite> insert into widgets values(null,'tom');
insert into widgets values(null,'tom');
sqlite> select * from widgets;
select * from widgets;
1|tom
sqlite>
API 方式

1. package org.imti;
2.
3. import android.app.Activity;
4. import android.database.Cursor;
5. import android.os.Bundle;
6. import android.view.View;
7. import android.view.View.OnClickListener;
8. import android.widget.Button;
9. import android.widget.EditText;
10. import android.widget.TextView;
11.
12. /**
13. * SQLite Demo
14. *
15. * 供Activity私有访问的数据库 没有使用ContentProvider 方式 增加 查询数据
16. *
17. * @author daguangspecial@gmail.com
18. *
19. */
20. public class DbDemo extends Activity {
21. EditText inputTxt;
22. Button btnAdd;
23. Button btnViewAll;
24. TextView viewAll;
25.
26. DBHelper db;
27.
28. @Override
29. protected void onCreate(Bundle savedInstanceState) {
30. // TODO Auto-generated method stub
31. super.onCreate(savedInstanceState);
32. this.setContentView(R.layout.dbdemo);
33. // 初始化UI
34. btnAdd = (Button) findViewById(R.id.btnAdd);
35. btnViewAll = (Button) findViewById(R.id.btnViewAll);
36. viewAll = (TextView) findViewById(R.id.viewAll);
37. inputTxt = (EditText) findViewById(R.id.txtInput);
38. // 初始化DB
39. new DBHelper(this);
40. // 初始化监听
41. new OnClickListener() {
42.
43. public void onClick(View v) {
44. if (v.getId() == R.id.btnAdd) {
45. // 增加
46. db.save(inputTxt.getText().toString());
47. db.close();
48. else if (v.getId() == R.id.btnViewAll) {
49. // 浏览所有数据
50. Cursor cur = db.loadAll();
51. new StringBuffer();
52. cur.moveToFirst();
53. while (!cur.isAfterLast()) {
54. 0)).append(" : ").append(
55. 1)).append("\n");
56. cur.moveToNext();
57. }
58. db.close();
59. viewAll.setText(sf.toString());
60. }
61. }
62. };
63. btnAdd.setOnClickListener(listener);
64. btnViewAll.setOnClickListener(listener);
65. }
66.
67. }

Java代码

1. package org.imti;
2.
3. import android.content.Context;
4. import android.database.Cursor;
5. import android.database.sqlite.SQLiteDatabase;
6. import android.util.Log;
7.
8. /**
9. * 数据库操作工具类
10. *
11. * @author daguangspecial@gmail.com
12. *
13. */
14. public class DBHelper {
15. private static final String TAG = "DBDemo_DBHelper";// 调试标签
16.
17. private static final String DATABASE_NAME = "dbdemo.db";// 数据库名
18. SQLiteDatabase db;
19. //应用环境上下文 Activity 是其子类
20.
21. DBHelper(Context _context) {
22. context = _context;
23. //开启数据库
24.
25. null);
26. CreateTable();
27. "db path=" + db.getPath());
28. }
29.
30. /**
31. * 建表
32. * 列名 区分大小写?
33. * 都有什么数据类型?
34. * SQLite 3
35. * TEXT 文本
36. NUMERIC 数值
37. INTEGER 整型
38. REAL 小数
39. NONE 无类型
40. * 查询可否发送select ?
41. */
42. public void CreateTable() {
43. try {
44. "CREATE TABLE t_user (" +
45. "_ID INTEGER PRIMARY KEY autoincrement,"
46. "NAME TEXT"
47. ");");
48. "Create Table t_user ok");
49. catch (Exception e) {
50. "Create Table t_user err,table exists.");
51. }
52. }
53. /**
54. * 增加数据
55. * @param id
56. * @param uname
57. * @return
58. */
59. public boolean save(String uname){
60. "";
61. try{
62. "insert into t_user values(null,'"+uname+"')";
63. db.execSQL(sql);
64. "insert Table t_user ok");
65. return true;
66.
67. catch(Exception e){
68. "insert Table t_user err ,sql: "+sql);
69. return false;
70. }
71. }
72. /**
73. * 查询所有记录
74. *
75. * @return Cursor 指向结果记录的指针,类似于JDBC 的 ResultSet
76. */
77. public Cursor loadAll(){
78.
79. "t_user", new String[]{"_ID","NAME"}, null,null, null, null, null);
80.
81. return cur;
82. }
83. public void close(){
84. db.close();
85. }
86. }