z-one 发表于 2013-1-30 01:04:14

Android-SQLite3 基础入门

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
      数据类型(5种):不区分大小写
       TEXT   文本
       NUMERIC 数值
       INTEGER 整型
       REAL   小数
       NONE   无类型

没有的:

    FOREIGN KEY 外键约束
    RIGHT OUTER JOIN 和 FULL OUTER JOIN
   ALTER TABLE


开始动手

API 方式

      


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);   
    }   
   
}
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);
}

}




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;   
    }   
      public void close(){   
      db.close();   
    }   
}


文章来源:http://www.sqlite.com.cn/MySqlite/4/554.Html
页: [1]
查看完整版本: Android-SQLite3 基础入门