Android SQLite3基础入门教程:建立数据库

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. packageorg.imti;
  2. importandroid.app.Activity;
  3. importandroid.database.Cursor;
  4. importandroid.os.Bundle;
  5. importandroid.view.View;
  6. importandroid.view.View.OnClickListener;
  7. importandroid.widget.Button;
  8. importandroid.widget.EditText;
  9. importandroid.widget.TextView;
  10. /**
  11. *SQLiteDemo
  12. *
  13. *供Activity私有访问的数据库没有使用ContentProvider方式增加查询数据
  14. *
  15. *@authordaguangspecial@gmail.com
  16. *
  17. */
  18. publicclassDbDemoextendsActivity{
  19. EditTextinputTxt;
  20. ButtonbtnAdd;
  21. ButtonbtnViewAll;
  22. TextViewviewAll;
  23. DBHelperdb;
  24. @Override
  25. protectedvoidonCreate(BundlesavedInstanceState){
  26. //TODOAuto-generatedmethodstub
  27. super.onCreate(savedInstanceState);
  28. this.setContentView(R.layout.dbdemo);
  29. //初始化UI
  30. btnAdd=(Button)findViewById(R.id.btnAdd);
  31. btnViewAll=(Button)findViewById(R.id.btnViewAll);
  32. viewAll=(TextView)findViewById(R.id.viewAll);
  33. inputTxt=(EditText)findViewById(R.id.txtInput);
  34. //初始化DB
  35. db=newDBHelper(this);
  36. //初始化监听
  37. OnClickListenerlistener=newOnClickListener(){
  38. publicvoidonClick(Viewv){
  39. if(v.getId()==R.id.btnAdd){
  40. //增加
  41. db.save(inputTxt.getText().toString());
  42. db.close();
  43. }elseif(v.getId()==R.id.btnViewAll){
  44. //浏览所有数据
  45. Cursorcur=db.loadAll();
  46. StringBuffersf=newStringBuffer();
  47. cur.moveToFirst();
  48. while(!cur.isAfterLast()){
  49. sf.append(cur.getInt(0)).append(":").append(
  50. cur.getString(1)).append("\n");
  51. cur.moveToNext();
  52. }
  53. db.close();
  54. viewAll.setText(sf.toString());
  55. }
  56. }
  57. };
  58. btnAdd.setOnClickListener(listener);
  59. btnViewAll.setOnClickListener(listener);
  60. }
  61. }

Java代码

 
  1. packageorg.imti;
  2. importandroid.content.Context;
  3. importandroid.database.Cursor;
  4. importandroid.database.sqlite.SQLiteDatabase;
  5. importandroid.util.Log;
  6. /**
  7. *数据库操作工具类
  8. *
  9. *@authordaguangspecial@gmail.com
  10. *
  11. */
  12. publicclassDBHelper{
  13. privatestaticfinalStringTAG="DBDemo_DBHelper";//调试标签
  14. privatestaticfinalStringDATABASE_NAME="dbdemo.db";//数据库名
  15. SQLiteDatabasedb;
  16. Contextcontext;//应用环境上下文Activity是其子类
  17. DBHelper(Context_context){
  18. context=_context;
  19. //开启数据库
  20. db=context.openOrCreateDatabase(DATABASE_NAME,Context.MODE_PRIVATE,null);
  21. CreateTable();
  22. Log.v(TAG,"dbpath="+db.getPath());
  23. }
  24. /**
  25. *建表
  26. *列名区分大小写?
  27. *都有什么数据类型?
  28. *SQLite3
  29. *TEXT文本
  30. NUMERIC数值
  31. INTEGER整型
  32. REAL小数
  33. NONE无类型
  34. *查询可否发送select?
  35. */
  36. publicvoidCreateTable(){
  37. try{
  38. db.execSQL("CREATETABLEt_user("+
  39. "_IDINTEGERPRIMARYKEYautoincrement,"
  40. +"NAMETEXT"
  41. +");");
  42. Log.v(TAG,"CreateTablet_userok");
  43. }catch(Exceptione){
  44. Log.v(TAG,"CreateTablet_usererr,tableexists.");
  45. }
  46. }
  47. /**
  48. *增加数据
  49. *@paramid
  50. *@paramuname
  51. *@return
  52. */
  53. publicbooleansave(Stringuname){
  54. Stringsql="";
  55. try{
  56. sql="insertintot_uservalues(null,'"+uname+"')";
  57. db.execSQL(sql);
  58. Log.v(TAG,"insertTablet_userok");
  59. returntrue;
  60. }catch(Exceptione){
  61. Log.v(TAG,"insertTablet_usererr,sql:"+sql);
  62. returnfalse;
  63. }
  64. }
  65. /**
  66. *查询所有记录
  67. *
  68. *@returnCursor指向结果记录的指针,类似于JDBC的ResultSet
  69. */
  70. publicCursorloadAll(){
  71. Cursorcur=db.query("t_user",newString[]{"_ID","NAME"},null,null,null,null,null);
  72. returncur;
  73. }
  74. publicvoidclose(){
  75. db.close();
  76. }
  77. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值