项目实战一 - 安卓数据库的设计(二 settings表 ,增,更新,查类)


说明:

1. settings表,元素有:ip,name,path,pathIndex,ipSettingMode,五个元素,所以,这里会抽象出一个类,

      叫DataBaseSettings类,主要方便内存数据操作。最后,加入数据库,都是以对象操作的。

 2. DBManager类,核心操作 - 增,更新,查操作,需要注意的是,这里面的对象 private SQLiteDatabase db,

     是没有关闭的,因为上一章节用的单例,所以这里,注意,不能close。针对这一点,本人还有疑问,只是当时为了解决报错,临时处理的。

     具体原理还没有查清楚。

3. 添加数据库的时候,添加了事务操作。


DataBaseSettings类

public class DataBaseSettings {
    
    private String mIp = "";
    private String mName = "" ;
    private int mPathIndex = 0 ;
    private String mPath = "";
    private String mipSettingMode = "" ;
    
    
    public String getIp() {
        return mIp;
    }
    public void setIp(String ip) {
        mIp = ip;
    }
    
    public String getName() {
        return mName;
    }
    public void setName(String name) {
        mName = name;
    }
    
    public String getPath() {
        return mPath;
    }
    public void setPath(String path) {
        mPath = path;
    }
    
    public int getPathIndex() {
        return mPathIndex;
    }
    public void setPathIndex(int pathIndex) {
        mPathIndex = pathIndex;
    }

    public String getipSettingMode() {
        return mipSettingMode;
    }
    public void setipSettingMode(String ipSettingMode) {
        mipSettingMode = ipSettingMode;
    }
}


DBManager 类 -- 下面的1,代表的唯一性。我这里一台终端,只有一份服务器的相关信息设置。

public class DBManager {
    
    private String TAG = "DBManager";
    private SQLiteDatabase db;
    
    public DBManager(Context context) {//得到  操作对象
    	synchronized(this){
            db = SqliteProcess.getInstance(context);//单例中得到数据库操作对象
    	}
    }
    
    /**
     * add settings - 添加数据
     * @param settings  
     */
    public synchronized void addSettings(DataBaseSettings dbstru) {
        db.beginTransaction();  //开始事务
        try {
            db.execSQL("INSERT INTO settings VALUES(1, ?, ?, ?, ?, ?)", new Object[]{dbstru.getIp(),dbstru.getName(),dbstru.getPath(),dbstru.getPathIndex(),dbstru.getipSettingMode()});
            db.setTransactionSuccessful();  //设置事务成功完成
        } finally {
            db.endTransaction();    //结束事务
        }
    }

  /**
     * update ip - 更新IP
     * @param DataBaseStruct
     */
    public synchronized void updateIp(DataBaseSettings dbstru) {
        ContentValues cv = new ContentValues();
        cv.put("ip", dbstru.getIp());
        db.update("settings", cv, "_id = ?", new String[]{"1"});
    }
    
    /**
     * update name - 更新设备名字
     * @param DataBaseStruct
     */
    public synchronized void updateName(DataBaseSettings dbstru) {
        ContentValues cv = new ContentValues();
        cv.put("name", dbstru.getName());
        db.update("settings", cv, "_id = ?", new String[]{"1"});
    }
    
    /**
     * update path - 跟新路径
     * @param DataBaseStruct
     */
    public synchronized void updatePath(DataBaseSettings dbstru) {
        ContentValues cv = new ContentValues();
        cv.put("path", dbstru.getPath());
        db.update("settings", cv, "_id = ?", new String[]{"1"});
    }
    
    /**
     * update pathIndex - 更新路径下标
     * @param DataBaseStruct
     */
    public synchronized void updatePathIndex(DataBaseSettings dbstru) {
        ContentValues cv = new ContentValues();
        cv.put("pathIndex", dbstru.getPathIndex());
        db.update("settings", cv, "_id = ?", new String[]{"1"});
    }
    
    /**
     * update ipSettingMode - 更新IP设置方式
     * @param DataBaseStruct
     */
    public synchronized void updateipSettingMode(DataBaseSettings dbstru) {
        ContentValues cv = new ContentValues();
        cv.put("ipSettingMode", dbstru.getipSettingMode());
        db.update("settings", cv, "_id = ?", new String[]{"1"});
    }
    
    /**
     * update all - 更新所有数据
     * @param DataBaseStruct
     */
    public synchronized void updateAll(DataBaseSettings dbstru) {
        updateIp(dbstru);
        updateName(dbstru);
        updatePathIndex(dbstru);
        updatePath(dbstru);
        updateipSettingMode(dbstru);
    }

       /**
     * query DataBaseStruct, return DataBaseStruct - 查询
     * @return  DataBaseStruct
     */
    public synchronized DataBaseSettings queryTheCursor() {
        Cursor c = db.rawQuery("SELECT * FROM settings", null);
        if(c.moveToFirst() == false){
            c.close();
            return null;
        }
        DataBaseSettings stru = new DataBaseSettings();
        stru.setIp(c.getString(c.getColumnIndex("ip")));
        stru.setName(c.getString(c.getColumnIndex("name")));
        stru.setPath(c.getString(c.getColumnIndex("path")));
        stru.setPathIndex(c.getInt(c.getColumnIndex("pathIndex")));
        stru.setipSettingMode(c.getString(c.getColumnIndex("ipSettingMode")));
        c.close();
        return stru;
    }
    
	 
    /**
     * close database - 这里面没有关闭喔 !!!
     */
    public synchronized void closeDB() {
        //db.close();                             ----  这里面没有关闭喔 !!!  
    }


}











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值