android sqlite基础入门
背景SQLite 是一个非常流行的嵌入式数据库,它提供了一个清爽的 SQL 接口,相当小的内存占用和高速的响应,更 Happy 的是他还是免费的,大家都可以尽情的使用,很多牛叉的公司(诸如 Adobe,Apple,Google,Sun,Symbian ),开源项目( Mozilla,PHP,Python )都在产品中装配 SQLite.
Android 中, SQLite 是被集成于 Android runtime ,每个 Android 应用程序都可以欢快的使用 SQLite 数据库,如果你熟悉 JDBC ,那么这个过程就更安逸了。
SQLite3 特征
和传统关系数据库比较
有的:
Sql 语句:SELECT INSERT UPDATE
CREATE DROP
数据类型:
不区分大小写
TEXT文本
NUMERIC 数值
INTEGER 整型
REAL小数
NONE无类型
没有的:
FOREIGN KEY 外键约束
RIGHT OUTER JOIN 和 FULL OUTER JOIN
ALTER TABLE
开始动手
动手之前,确认你的机器中已经配置好如下环境:
Android 开发环境(怎么配置问 Google ,有很多)
本文档适用环境 Android1.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 方式
[*]packageorg.imti;
[*]
[*]importandroid.app.Activity;
[*]importandroid.database.Cursor;
[*]importandroid.os.Bundle;
[*]importandroid.view.View;
[*]importandroid.view.View.OnClickListener;
[*]importandroid.widget.Button;
[*]importandroid.widget.EditText;
[*]importandroid.widget.TextView;
[*]
[*]/**
[*]*SQLiteDemo
[*]*
[*]*供Activity私有访问的数据库没有使用ContentProvider方式增加查询数据
[*]*
[*]*@authordaguangspecial@gmail.com
[*]*
[*]*/
[*]publicclassDbDemoextendsActivity{
[*]EditTextinputTxt;
[*]ButtonbtnAdd;
[*]ButtonbtnViewAll;
[*]TextViewviewAll;
[*]
[*]DBHelperdb;
[*]
[*]@Override
[*]protectedvoidonCreate(BundlesavedInstanceState){
[*]//TODOAuto-generatedmethodstub
[*]super.onCreate(savedInstanceState);
[*]this.setContentView(R.layout.dbdemo);
[*]//初始化UI
[*]btnAdd=(Button)findViewById(R.id.btnAdd);
[*]btnViewAll=(Button)findViewById(R.id.btnViewAll);
[*]viewAll=(TextView)findViewById(R.id.viewAll);
[*]inputTxt=(EditText)findViewById(R.id.txtInput);
[*]//初始化DB
[*]db=newDBHelper(this);
[*]//初始化监听
[*]OnClickListenerlistener=newOnClickListener(){
[*]
[*]publicvoidonClick(Viewv){
[*]if(v.getId()==R.id.btnAdd){
[*]//增加
[*]db.save(inputTxt.getText().toString());
[*]db.close();
[*]}elseif(v.getId()==R.id.btnViewAll){
[*]//浏览所有数据
[*]Cursorcur=db.loadAll();
[*]StringBuffersf=newStringBuffer();
[*]cur.moveToFirst();
[*]while(!cur.isAfterLast()){
[*]sf.append(cur.getInt(0)).append(":").append(
[*]cur.getString(1)).append("\n");
[*]cur.moveToNext();
[*]}
[*]db.close();
[*]viewAll.setText(sf.toString());
[*]}
[*]}
[*]};
[*]btnAdd.setOnClickListener(listener);
[*]btnViewAll.setOnClickListener(listener);
[*]}
[*]
[*]}
[*]packageorg.imti;
[*]
[*]importandroid.content.Context;
[*]importandroid.database.Cursor;
[*]importandroid.database.sqlite.SQLiteDatabase;
[*]importandroid.util.Log;
[*]
[*]/**
[*]*数据库操作工具类
[*]*
[*]*@authordaguangspecial@gmail.com
[*]*
[*]*/
[*]publicclassDBHelper{
[*]privatestaticfinalStringTAG="DBDemo_DBHelper";//调试标签
[*]
[*]privatestaticfinalStringDATABASE_NAME="dbdemo.db";//数据库名
[*]SQLiteDatabasedb;
[*]Contextcontext;//应用环境上下文Activity是其子类
[*]
[*]DBHelper(Context_context){
[*]context=_context;
[*]//开启数据库
[*]
[*]db=context.openOrCreateDatabase(DATABASE_NAME,Context.MODE_PRIVATE,null);
[*]CreateTable();
[*]Log.v(TAG,"dbpath="+db.getPath());
[*]}
[*]
[*]/**
[*]*建表
[*]*列名区分大小写?
[*]*都有什么数据类型?
[*]*SQLite3
[*]*TEXT文本
[*]NUMERIC数值
[*]INTEGER整型
[*]REAL小数
[*]NONE无类型
[*]*查询可否发送select?
[*]*/
[*]publicvoidCreateTable(){
[*]try{
[*]db.execSQL("CREATETABLEt_user("+
[*]"_IDINTEGERPRIMARYKEYautoincrement,"
[*]+"NAMETEXT"
[*]+");");
[*]Log.v(TAG,"CreateTablet_userok");
[*]}catch(Exceptione){
[*]Log.v(TAG,"CreateTablet_usererr,tableexists.");
[*]}
[*]}
[*]/**
[*]*增加数据
[*]*@paramid
[*]*@paramuname
[*]*@return
[*]*/
[*]publicbooleansave(Stringuname){
[*]Stringsql="";
[*]try{
[*]sql="insertintot_uservalues(null,'"+uname+"')";
[*]db.execSQL(sql);
[*]Log.v(TAG,"insertTablet_userok");
[*]returntrue;
[*]
[*]}catch(Exceptione){
[*]Log.v(TAG,"insertTablet_usererr,sql:"+sql);
[*]returnfalse;
[*]}
[*]}
[*]/**
[*]*查询所有记录
[*]*
[*]*@returnCursor指向结果记录的指针,类似于JDBC的ResultSet
[*]*/
[*]publicCursorloadAll(){
[*]
[*]Cursorcur=db.query("t_user",newString[]{"_ID","NAME"},null,null,null,null,null);
[*]
[*]returncur;
[*]}
[*]publicvoidclose(){
[*]db.close();
[*]}
[*]}
页:
[1]