使用 SQLiteOpenHelper 操作 SQLite 数据库

1、创建继承于SQLiteOpenHelper的类DBHelper,并重写onCreate()和onUpgrade()。

public class DBHelper extends SQLiteOpenHelper {

    private static final String TAG = "DBHelper";

    public final String CAREA_TABLE = "cArea";
    public final String NAREA_TABLE = "nArea";

    public final String CAREATE_CAREA_TABLE_SQL = "CREATE TABLE " + CAREA_TABLE + "("
            + "areaCode VARCHAR(20),"
            + "areaName varchar(30),"
            + "parentCode varchar(20),"
            + "sortOrder INTEGER"
            + ");";

    public final String CAREATE_NAREA_TABLE_SQL = "CREATE TABLE " + NAREA_TABLE + "("
            + "id VARCHAR(20),"
            + "areaCode varchar(30),"
            + "locationName varchar(20),"
            + "landmark varchar(50)"
            + ");";

    //必须要有构造函数
    public DBHelper(Context context, String dbName, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, dbName, factory, version);
    }

    // 当第一次创建数据库的时候,调用该方法
    @Override
    public void onCreate(SQLiteDatabase db) {

        db.execSQL(CAREATE_CAREA_TABLE_SQL);
        Log.e("create","数据库创建成功1");

        db.execSQL(CAREATE_NAREA_TABLE_SQL);
        Log.e("create","数据库创建成功2");
    }

    //当更新数据库的时候执行该方法
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //输出更新数据库的日志信息
        Log.i(TAG, "update Database------------->");
    }
}

2、DBHelper 的使用

    /**
     * 数据库名称
     */
    private final String DB_NAME = "data.db";
    /**
     * 数据库版本
     */
    private final int DB_VERSION = 1;

    private SQLiteDatabase db;
    private DBHelper dbHelper;

    dbHelper = new DBHelper(this, DB_NAME, null, DB_VERSION);
    db = dbHelper.getReadableDatabase();

    List<ContentValues> list = new ArrayList<ContentValues>();
    insert(list, dbHelper.NAREA_TABLE);

    private void insert(List<ContentValues> list, String tableName) {
        db.beginTransaction();
        try {
            for (ContentValues cv : list) {
                db.insertOrThrow(tableName, null, cv);
            }
            db.setTransactionSuccessful();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            db.endTransaction();
        }
    }

3、ContentValues 对象的生成示例

private ContentValues getCV(CAreaEntity entity) {
    //生成ContentValues对象 //key:列名,value:想插入的值
    ContentValues cv = new ContentValues();
    //往ContentValues对象存放数据,键-值对模式
    cv.put("areaCode", entity.getAreaCode());
    cv.put("areaName", entity.getAreaName());
    cv.put("parentCode", entity.getParentCode());
    cv.put("sortOrder", entity.getSortOrder());
    return cv;
}
4、 使用之后不要忘记调用 db.close();

猜你喜欢

转载自blog.csdn.net/suyimin2010/article/details/80137159