一切福田,不離方寸,從心而覓,感無不通。

Android之SQLiteOpenHelper应用

1.SQLiteOpenHelper

SQliteOpenHelper是一个抽象类,来管理数据库的创建和版本的管理。要使用它必须实现它的nCreate(SQLiteDatabase),onUpgrade(SQLiteDatabase, int, int)方法

onCreate:当数据库第一次被建立的时候被执行,例如创建表,初始化数据等。

onUpgrade:当数据库需要被更新的时候执行,例如删除久表,创建新表。

2.实现代码

  1. package xqh.utils;
  2. import android.content.Context;
  3. import android.database.sqlite.SQLiteDatabase;
  4. import android.database.sqlite.SQLiteOpenHelper;
  5. import android.database.sqlite.SQLiteDatabase.CursorFactory;
  6. public class DBHelper extends SQLiteOpenHelper {
  7.     //数据库版本  
  8.     private static final int VERSION = 1;
  9.     //新建一个表  
  10.     String sql = "create table if not exists TestUsers"+
  11.     "(id int primary key,name varchar,sex varchar)";
  12.     public DBHelper(Context context, String name, CursorFactory factory,
  13.             int version) {
  14.         super(context, name, factory, version);
  15.     }
  16.     public DBHelper(Context context,String name,int version){
  17.         this(context,name,null,version);
  18.     }
  19.     public DBHelper(Context context,String name){
  20.         this(context,name,VERSION);
  21.     }
  22.     @Override
  23.     public void onCreate(SQLiteDatabase db) {
  24.         db.execSQL(sql);
  25.     }
  26.     @Override
  27.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  28.     }
  29. }

3.SQLite的使用

Android提供了一个名为SQLiteDatabase的类,它封装了一些操作数据库的API。使用它能实现基本的CRUD操作,通过getWritableDatabase()和getReadableDatabase()可以获取数据库实例。

4.实现代码

  1. package xqh.sqlite;
  2. import xqh.utils.DBHelper;
  3. import android.app.Activity;
  4. import android.database.SQLException;
  5. import android.database.sqlite.SQLiteDatabase;
  6. import android.os.Bundle;
  7. import android.widget.Button;
  8. import android.util.Log;
  9. import android.view.View;
  10. import android.view.View.OnClickListener;;
  11. public class TestSQLite extends Activity {
  12.     Button textBtn = null;
  13.     Button btnCreateDb = null;
  14.     Button btnCreateTb = null;
  15.     Button btnInsert = null;
  16.     Button btnUpdate = null;
  17.     Button btnDelete = null;
  18.     DBHelper dbHelper = null;
  19.     SQLiteDatabase db = null;
  20.     @Override
  21.     protected void onCreate(Bundle savedInstanceState) {
  22.         // TODO Auto-generated method stub  
  23.         super.onCreate(savedInstanceState);
  24.         setContentView(R.layout.sqlitetest);
  25.         OpenDb();
  26.         textBtn = (Button)findViewById(R.id.btnHeader);
  27.         textBtn.setFocusable(true);
  28. //        btnCreateDb = (Button)findViewById(R.id.btnCreateDb);  
  29. //        btnCreateDb.setOnClickListener(createDbListener);  
  30. //          
  31. //        btnCreateTb = (Button)findViewById(R.id.btnCreateTb);  
  32. //        btnCreateTb.setOnClickListener(createTbListener);  
  33.         btnInsert = (Button)findViewById(R.id.btnInsert);
  34.         btnInsert.setOnClickListener(insertTbListener);
  35.         btnUpdate = (Button)findViewById(R.id.btnUpdate);
  36.         btnUpdate.setOnClickListener(updateTbListener);
  37.         btnDelete = (Button)findViewById(R.id.btnDelete);
  38.         btnDelete.setOnClickListener(deleteTbListener);
  39.     }
  40.     public OnClickListener deleteTbListener = new OnClickListener() {
  41.         public void onClick(View v) {
  42.             DeleteTb();
  43.         }
  44.     };
  45.     public OnClickListener updateTbListener = new OnClickListener() {
  46.         public void onClick(View v) {
  47.             UpdateTb();
  48.         }
  49.     };
  50.     public OnClickListener insertTbListener = new OnClickListener() {
  51.         public void onClick(View v) {
  52.             InsertTb();
  53.         }
  54.     };
  55. //    public OnClickListener createDbListener = new OnClickListener() {  
  56. //        public void onClick(View v) {  
  57. //            CreateDatabase("TestDb01");  
  58. //        }  
  59. //    };  
  60. //    public OnClickListener createTbListener = new OnClickListener() {  
  61. //        public void onClick(View v) {  
  62. //            CreateTable();  
  63. //        }  
  64. //    };  
  65. //    /**  
  66. //     * 新建一个数据库  
  67. //     * @param dbName  
  68. //     * @return  
  69. //     */  
  70. //    public SQLiteDatabase CreateDatabase(String dbName){  
  71. //        dbHelper = new DBHelper(this, dbName);  
  72. //        return dbHelper.getWritableDatabase();  
  73. //    }  
  74.     /** 
  75.      * 新建一个表 
  76.      * @param db 
  77.      */
  78.     public void CreateTable(){
  79.         db = dbHelper.getWritableDatabase();
  80.         String sql = "create table if not exists TestUsers"+
  81.                         "(id int primary key,name varchar,sex varchar)";
  82.         try {
  83.             db.execSQL(sql);
  84.         } catch (SQLException e) {
  85.             Log.i("err""create table failed");
  86.         }
  87.     }
  88.     /** 
  89.      * 插入数据 
  90.      */
  91.     public void InsertTb(){
  92.         db = dbHelper.getWritableDatabase();
  93.         String sql = "insert into TestUsers (id,name,sex) values (2,’hongguang',’men')";
  94.         try {
  95.             db.execSQL(sql);
  96.         } catch (SQLException e) {
  97.             Log.i("err""insert failed");
  98.         }
  99.     }
  100.     /** 
  101.      * 更新数据 
  102.      */
  103.     public void UpdateTb() {
  104.         db = dbHelper.getWritableDatabase();
  105.         String sql = "Update TestUsers set name = 'anhong',sex = 'men' where id = 2";
  106.         try {
  107.             db.execSQL(sql);
  108.         } catch (SQLException e) {
  109.             Log.i("err""update failed");
  110.         }
  111.     }
  112.     /** 
  113.      * 删除数据 
  114.      */
  115.     public void DeleteTb(){
  116.         db = dbHelper.getWritableDatabase();
  117.         String sql = "delete from TestUsers where id = 2";
  118.         try {
  119.             db.execSQL(sql);
  120.         } catch (SQLException e) {
  121.             Log.i("err""delete failed");
  122.         }
  123.     }
  124.     /** 
  125.      * 打开数据库 
  126.      */
  127.     public void OpenDb(){
  128.         dbHelper = new DBHelper(this"TestDb01");
  129.         db = dbHelper.getWritableDatabase();
  130.     }
  131.     /** 
  132.      * 关闭数据库 
  133.      */
  134.     public void CloseDb(){
  135.         dbHelper.close();
  136.     }
  137.     @Override
  138.     protected void onDestroy() {
  139.         super.onDestroy();
  140.         if(db!=null){
  141.             db.close();
  142.         }
  143.         if(dbHelper!=null){
  144.             dbHelper.close();
  145.         }
  146.     }
  147. }

5.一些SQLite操作命令

5.1 adb shell 进入命令模式

5.2 cd 文件名 进入文件

5.3 ls或ls -l 查看目录下的文件

5.4 sqlite3 数据库名 进入数据库

5.5 .schema 查看数据库下的信息

5.6 ctrl+d 退出sqlite模式

本文链接:http://blog.csdn.net/cycwind/article/details/6960501#