Android之SQLiteOpenHelper

1.SQLiteOpenHelper

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

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

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

2.实现代码

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

3.SQLite的使用

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

4.实现代码

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

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://tech.chinaunix.net/a2010/1103/1121/000001121539.shtml


你可能感兴趣的:(android)