MySQLiteOpenHelper.java
上传用户:vip_99
上传日期:2021-03-27
资源大小:61159k
文件大小:5k
源码类别:

android开发

开发平台:

Java

  1. package irdc.ex10_06;
  2. import android.content.ContentValues;
  3. import android.content.Context;
  4. import android.database.Cursor;
  5. import android.database.sqlite.SQLiteDatabase;
  6. import android.database.sqlite.SQLiteOpenHelper;
  7. import android.database.sqlite.SQLiteDatabase.CursorFactory;
  8. public class MySQLiteOpenHelper extends SQLiteOpenHelper
  9. {
  10.   public String TableNames[];
  11.   public String FieldNames[][];
  12.   public String FieldTypes[][];
  13.   public static String NO_CREATE_TABLES = "no tables";
  14.   private String message = "";
  15.   
  16.   public MySQLiteOpenHelper(
  17.     Context context, String dbname, 
  18.     CursorFactory factory, int version, String tableNames[], 
  19.     String fieldNames[][], String fieldTypes[][])
  20.   {
  21.     super(context, dbname, factory, version);
  22.     TableNames = tableNames;
  23.     FieldNames = fieldNames;
  24.     FieldTypes = fieldTypes;
  25.   }
  26.   @Override
  27.   public void onCreate(SQLiteDatabase db)
  28.   {
  29.     if (TableNames == null)
  30.     {
  31.       message = NO_CREATE_TABLES;
  32.       return;
  33.     }
  34.     /* 创建table */
  35.     for (int i = 0; i < TableNames.length; i++)
  36.     {
  37.       String sql = "CREATE TABLE " + TableNames[i] + " (";
  38.       for (int j = 0; j < FieldNames[i].length; j++)
  39.       {
  40.         sql += FieldNames[i][j] + " " + FieldTypes[i][j] + ",";
  41.       }
  42.       sql = sql.substring(0, sql.length() - 1);
  43.       sql += ")";
  44.       db.execSQL(sql);
  45.     }
  46.   }
  47.   @Override
  48.   public void onUpgrade(SQLiteDatabase db, int arg1, int arg2)
  49.   {
  50.     for (int i = 0; i < TableNames[i].length(); i++)
  51.     {
  52.       String sql = "DROP TABLE IF EXISTS " + TableNames[i];
  53.       db.execSQL(sql);
  54.     }
  55.     onCreate(db);
  56.   }
  57.   public void execSQL(String sql) throws java.sql.SQLException
  58.   {
  59.     SQLiteDatabase db = this.getWritableDatabase();
  60.     db.execSQL(sql);
  61.   }
  62.   /**
  63.    * 查询数据
  64.    * 
  65.    * @param table
  66.    *          查询的table name
  67.    * @param columns
  68.    *          查询的数据的字段名称
  69.    * @param selection
  70.    *          查询条件字符串 如:field1 = ? and field2 = ?
  71.    * @param selectionArgs
  72.    *          查询条件的值 如:["a","b"]
  73.    * @param groupBy
  74.    *          groupBy后面的字符串 如:field1,field2
  75.    * @param having
  76.    *          having后面的字符串
  77.    * @param orderBy
  78.    *          orderBy后面的字符串
  79.    * @return Cursor 包含了取得的资料集
  80.    */
  81.   public Cursor select(String table, String[] columns, 
  82.     String selection, String[] selectionArgs, String groupBy, 
  83.     String having, String orderBy)
  84.   {
  85.     SQLiteDatabase db = this.getReadableDatabase();
  86.     Cursor cursor = db.query
  87.     (
  88.       table, columns, selection, selectionArgs, 
  89.       groupBy, having, orderBy
  90.     );
  91.     return cursor;
  92.   }
  93.   /**
  94.    * 添加资料
  95.    * 
  96.    * @param table
  97.    *          添加资料的table name
  98.    * @param fields
  99.    *          添加数据的字段名称
  100.    * @param values
  101.    *          添加数据的字段值
  102.    * @return long row id
  103.    */
  104.   public long insert(String table, String fields[], String values[])
  105.   {
  106.     SQLiteDatabase db = this.getWritableDatabase();
  107.     /* 将添加的值放入ContentValues */
  108.     ContentValues cv = new ContentValues();
  109.     for (int i = 0; i < fields.length; i++)
  110.     {
  111.       cv.put(fields[i], values[i]);
  112.     }
  113.     return db.insert(table, null, cv);
  114.   }
  115.   /**
  116.    * 删除数据
  117.    * 
  118.    * @param table
  119.    *          删除数据的table name
  120.    * @param where
  121.    *          删除资料的条件
  122.    * @param whereValue
  123.    *          删除资料的条件值
  124.    * @return int 删除的笔数
  125.    */
  126.   public int delete(String table, String where, String[] whereValue)
  127.   {
  128.     SQLiteDatabase db = this.getWritableDatabase();
  129.     return db.delete(table, where, whereValue);
  130.   }
  131.   /**
  132.    * 更新数据
  133.    * 
  134.    * @param table
  135.    *          更新数据的table name
  136.    * @param fields
  137.    *          更新数据的字段名称
  138.    * @param values
  139.    *          更新数据的字段值
  140.    * @param where
  141.    *          更新除数据的条件
  142.    * @param whereValue
  143.    *          更新数据的条件值
  144.    * @return int 更新的笔数
  145.    */
  146.   public int update(String table, String updateFields[],
  147.       String updateValues[], String where, String[] whereValue)
  148.   {
  149.     SQLiteDatabase db = this.getWritableDatabase();
  150.     /* 将修改的值放入ContentValues */
  151.     ContentValues cv = new ContentValues();
  152.     for (int i = 0; i < updateFields.length; i++)
  153.     {
  154.       cv.put(updateFields[i], updateValues[i]);
  155.     }
  156.     return db.update(table, cv, where, whereValue);
  157.   }
  158.   public String getMessage()
  159.   {
  160.     return message;
  161.   }
  162.   @Override
  163.   public synchronized void close()
  164.   {
  165.     // TODO Auto-generated method stub
  166.     super.close();
  167.   }
  168. }