Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android SqLitez綜述

android SqLitez綜述

編輯:關於Android編程

     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 [email protected]
 * 
 */ 
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 [email protected]
 * 
 */ 
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
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved