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. 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.         db = new DBHelper(this);   
  40.         // 初始化监听   
  41.         OnClickListener listener = 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.                     StringBuffer sf = new StringBuffer();   
  52.                     cur.moveToFirst();   
  53.                     while (!cur.isAfterLast()) {   
  54.                         sf.append(cur.getInt(0)).append(" : ").append(   
  55.                                 cur.getString(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.     Context context;//应用环境上下文   Activity 是其子类   
  20.    
  21.     DBHelper(Context _context) {   
  22.         context = _context;   
  23.         //开启数据库   
  24.             
  25.         db = context.openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE,null);   
  26.         CreateTable();   
  27.         Log.v(TAG, "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.             db.execSQL("CREATE TABLE t_user (" +   
  45.                     "_ID INTEGER PRIMARY KEY autoincrement,"   
  46.                     + "NAME TEXT"    
  47.                     + ");");   
  48.             Log.v(TAG, "Create Table t_user ok");   
  49.         } catch (Exception e) {   
  50.             Log.v(TAG, "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.         String sql="";   
  61.         try{   
  62.             sql="insert into t_user values(null,'"+uname+"')";   
  63.             db.execSQL(sql);   
  64.             Log.v(TAG,"insert Table t_user ok");   
  65.             return true;   
  66.                
  67.         }catch(Exception e){   
  68.             Log.v(TAG,"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.         Cursor cur=db.query("t_user"new String[]{"_ID","NAME"}, null,nullnullnullnull);   
  80.            
  81.         return cur;   
  82.     }   
  83.       public void close(){   
  84.         db.close();   
  85.     }   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值