zoukankan      html  css  js  c++  java
  • Android Sqlite的操作

    1.写一个类继承SQLiteOpenHelper

    public class MyHelper extends SQLiteOpenHelper {

    public MyHelper(Context context) {

    super(context, Const.DB_DBNAME , null, Const.DB_VERSION);

    // TODO Auto-generated constructor stub

    }

    @Override

    public void onCreate(SQLiteDatabase db) {

    db.execSQL(Const.DB_CREATE_TABLE) ;

    }

    @Override

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    // TODO Auto-generated method stub

    }

    }

    2.定义一个Const类,定义数据库所需的常量

    public class Const {

    // 定义数据库相关常量

    public static final int DB_VERSION = 1;

    public static final String DB_DBNAME = "bwl.db";

    public static final String DB_TABLENAME = "bwlinfo";

    public static final String DB_COLUMN_ID = "_id";

    public static final String DB_COLUMN_TITLE = "title";

    public static final String DB_COLUMN_CONTENT = "content";

    public static final String DB_COLUMN_DATE = "date";

    public static final String DB_CREATE_TABLE = "CREATE TABLE " + DB_TABLENAME + "(" + DB_COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + DB_COLUMN_TITLE + " text not null," + DB_COLUMN_CONTENT + " text," + DB_COLUMN_DATE + " text)" ;

    // Intent的key常量

    // SharedPreferences的Key常量 , 文件名

    // 内部存储的文件名

    }

    3.写操作数据库的方法

    // 封装数据库操作

    public class DBTool {

    private static MyHelper helper ;

    private static SQLiteDatabase db ;

    // insert

    public static long insertData(Context context , BWL bwl) {

    openConn(context);

    ContentValues values = new ContentValues();

    values.put(Const.DB_COLUMN_TITLE, bwl.getTitle());

    values.put(Const.DB_COLUMN_CONTENT , bwl.getContent());

    values.put(Const.DB_COLUMN_DATE, bwl.getDate());

    long rowId = db.insert(Const.DB_TABLENAME, null, values);

    closeConn();

    return rowId;

    }

    // update

    /**

     * 更新记录时只能更新一条

     * @param updateId 要更新的数据行id

     */

    public static int updateData(Context context , BWL bwl , long updateId) {

    openConn(context);

    ContentValues values = new ContentValues();

    values.put(Const.DB_COLUMN_TITLE, bwl.getTitle());

    values.put(Const.DB_COLUMN_CONTENT , bwl.getContent());

    values.put(Const.DB_COLUMN_DATE, bwl.getDate());

    int result = db.update(Const.DB_TABLENAME, values, Const.DB_COLUMN_ID+"="+updateId, null) ;

    closeConn();

    return result;

    }

    /**

     * 自定义更新,可以更新多条记录

     * @param context

     * @param bwl

     * @param where  更新条件

     * @return  更新的行数

     */

    public static int updateData(Context context , BWL bwl , String where) {

    openConn(context);

    ContentValues values = new ContentValues();

    values.put(Const.DB_COLUMN_TITLE, bwl.getTitle());

    values.put(Const.DB_COLUMN_CONTENT , bwl.getContent());

    values.put(Const.DB_COLUMN_DATE, bwl.getDate());

    int result = db.update(Const.DB_TABLENAME, values, where, null) ;

    closeConn();

    return result;

    }

    // delete

    /**

     * 最多删除一行

     * @param deleteId 要删除行的id

     * @return 删除的行数

     */

    public static int deleteData(Context context , long deleteId) {

    openConn(context);

    int result = db.delete(Const.DB_TABLENAME, Const.DB_COLUMN_ID+"="+deleteId, null);

    closeConn();

    return result;

    }

    /**

     * 自定义删除

     * @param context

     * @param where   删除数据的条件

     * @return 删除的行数

     */

    public static int deleteData(Context context , String where) {

    openConn(context);

    int result = db.delete(Const.DB_TABLENAME, where, null);

    closeConn();

    return result;

    }

    /**

     * 根据给定的id,查询该条记录

     * @param context

     * @param rowId   要查询的数据行id

     * @return 如果rowId存在,查找成功,返回BWL对象,如果rowId不存在,返回null

     */

    public static BWL selectOne(Context context , long rowId) {

    openConn(context);

    Cursor cursor = db.query(

    Const.DB_TABLENAME , null, 

    Const.DB_COLUMN_ID+"="+rowId , null, 

    null, null, null);

    BWL bwl = null;

    if(cursor.moveToNext()) {

    bwl = new BWL(cursor.getLong(0), cursor.getString(1), cursor.getString(2), cursor.getString(3)) ;

    }

    closeConn();

    return bwl;

    }

    /**

     * 按照用户指定的条件进行查询

     * @param context

     * @param where 查询条件,如果为null,将查询所有数据

     * @param order 要排序的列 , 如果为null,将按照默认主键排序

     * @param isAsc 排序列的升降序

     * @return 查询结果集,如果没有查找到任何数据,返回null

     */

    // List<BWL> list = DBTool.selectMore(this, null, Const.DB_COLUMN_DATE, false);

    public static List<BWL> selectMore(Context context , String where , String order , Boolean isAsc) {

    openConn(context);

    String orderStr = "";

    if(null != order && order.trim().length() != 0) {

    orderStr += order;

    if(isAsc != null && !isAsc) {

    orderStr += " desc";

    }

    }

    Cursor cursor = db.query(

    Const.DB_TABLENAME , null, 

    where , null, 

    null, null, orderStr);

    if(cursor.getCount() <= 0) {

    return null ;

    }

    List<BWL> list = new ArrayList<BWL>();

    while(cursor.moveToNext()) {

    list.add(new BWL(cursor.getLong(0), cursor.getString(1), cursor.getString(2), cursor.getString(3))) ;

    }

    closeConn();

    return list;

    }

    /**

     * 执行sql语句

     * @param context

     * @param sql  要执行的sql语句

     */

    public static void execCmd(Context context , String sql) {

    openConn(context);

    db.execSQL(sql);

    closeConn();

    }

    // 打开连接

    private static void openConn(Context context) {

    if(null == db) {

    if(null == helper) {

    helper = new MyHelper(context);

    }

    db = helper.getWritableDatabase();

    }

    }

    // 关闭连接

    private static void closeConn() {

    if(null != db) {

    db.close();

    db = null;

    }

    }

    }

    4.对数据库进行操作

    BWL bwl = new BWL("星期六", "周末小聚", "2011年");

    //        DBTool.insertData(this, bwl);

    //        

    //        BWL bwl2 = new BWL("周末", "去玩", "2011年");

    //        DBTool.updateData(this, bwl2, 1);

    //        

    //        BWL bwl3 = new BWL("周五", "去玩", "2011年");

    //        DBTool.updateData(this, bwl2, Const.DB_COLUMN_TITLE +" like '%周%'");

            

    //        BWL bwl4 = DBTool.selectOne(this, 2);

    //        if(null != bwl4) {

    //         Toast.makeText(this, bwl4.toString(), Toast.LENGTH_LONG).show();

    //        }

            

    //        List<BWL> list = DBTool.selectMore(this, null, Const.DB_COLUMN_DATE, false);

    //        String content = "";

    //        for (BWL bwl : list) {

    // content += bwl.toString() + " ";

    // }

    //        Toast.makeText(this,content, Toast.LENGTH_LONG).show();

            

    //        DBTool.deleteData(this, 1);

    //        DBTool.deleteData(this, null);

  • 相关阅读:
    【MySQL】mysql实现将b表某列数据填充到a表
    Java集合包(十)——Set的两个实现类
    Java集合包(七)——Map实现类之LinkedHashMap原理
    Java集合包(九)——Map实现类之TreeMap原理
    Java集合包(八)——Map实现类之 WeakHashMap 原理分析
    Java集合包(六)——Map实现类之HashMap、HashTable 原理分析
    Java集合包(五)——Map接口及其子接口、抽象类
    Java集合包(四)——List实现类之LinkedList与Stack原理分析
    Java集合包(三)——List实现类之ArrayList与Vector原理分析
    Java集合包(二)——Collection接口及其子接口、抽象类 原理分析
  • 原文地址:https://www.cnblogs.com/kuaileyuyi/p/3853453.html
Copyright © 2011-2022 走看看