虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > Android编程 > android SqLitez综述

android SqLitez综述
类别:Android编程   作者:码皇   来源:互联网   点击:

android SqLitez综述背景 SQLite 是一个非常流行的嵌入式数据库,它提供了一个清爽的 SQL 接口,相当小的内存占用和高速的响应,更 Happy 的是他还是免费的,大家都可以尽情的使用,很多牛叉的公司(诸
     android SqLitez综述
 
背景
       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 方式
     
 
Java代码 
package org.imti; 
 
import android.app.Activity; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
 
/**
 * SQLite Demo
 * 
 * 供Activity私有访问的数据库 没有使用ContentProvider 方式 增加 查询数据
 * 
 * @author daguangspecial@gmail.com
 * 
 */ 
public class DbDemo extends Activity { 
    EditText inputTxt; 
    Button btnAdd; 
    Button btnViewAll; 
    TextView viewAll; 
 
    DBHelper db; 
 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        // TODO Auto-generated method stub 
        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 = new DBHelper(this); 
        // 初始化监听 
        OnClickListener listener = new OnClickListener() { 
 
            public void onClick(View v) { 
                if (v.getId() == R.id.btnAdd) { 
                    // 增加 
                    db.save(inputTxt.getText().toString()); 
                                       db.close(); 
                } else if (v.getId() == R.id.btnViewAll) { 
                    // 浏览所有数据 
                    Cursor cur = db.loadAll(); 
                    StringBuffer sf = new StringBuffer(); 
                    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); 
    } 
 

 
 
 
 
Java代码 
package org.imti; 
 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.util.Log; 
 
/**
 * 数据库操作工具类
 * 
 * @author daguangspecial@gmail.com
 * 
 */ 
public class DBHelper { 
    private static final String TAG = "DBDemo_DBHelper";// 调试标签 
 
    private static final String DATABASE_NAME = "dbdemo.db";// 数据库名 
    SQLiteDatabase db; 
    Context context;//应用环境上下文   Activity 是其子类 
 
    DBHelper(Context _context) { 
        context = _context; 
        //开启数据库 
          
        db = context.openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE,null); 
        CreateTable(); 
        Log.v(TAG, "db path=" + db.getPath()); 
    } 
 
    /**
     * 建表
     * 列名 区分大小写?
     * 都有什么数据类型?
     * SQLite 3 
     *  TEXT    文本
        NUMERIC 数值
        INTEGER 整型
        REAL    小数
        NONE    无类型
     * 查询可否发送select ?
     */ 
    public void CreateTable() { 
        try { 
            db.execSQL("CREATE TABLE t_user (" + 
                    "_ID INTEGER PRIMARY KEY autoincrement," 
                    + "NAME TEXT"  
                    + ");"); 
            Log.v(TAG, "Create Table t_user ok"); 
        } catch (Exception e) { 
            Log.v(TAG, "Create Table t_user err,table exists."); 
        } 
    } 
    /**
     * 增加数据
     * @param id
     * @param uname
     * @return
     */ 
    public boolean save(String uname){ 
        String sql=""; 
        try{ 
            sql="insert into t_user values(null,'"+uname+"')"; 
            db.execSQL(sql); 
            Log.v(TAG,"insert Table t_user ok"); 
            return true; 
             
        }catch(Exception e){ 
            Log.v(TAG,"insert Table t_user err ,sql: "+sql); 
            return false; 
        } 
    } 
    /**
     * 查询所有记录
     * 
     * @return Cursor 指向结果记录的指针,类似于JDBC 的 ResultSet
     */ 
    public Cursor loadAll(){ 
         
        Cursor cur=db.query("t_user", new String[]{"_ID","NAME"}, null,null, null, null, null); 
         
        return cur; www.2cto.com
    } 
      public void close(){ 
        db.close(); 
    } 

作者:chang_xing
相关热词搜索: android SqLitez