sqite3 初級

轉自:http://www.sqlite.com.cn/MySqlite/4/554.Html

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 方式

      

  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 [email protected]  
  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. }  
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);	}}
  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 [email protected]  
  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.     }   


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章