您的位置:首页 > 数据库

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

2015-08-27 00:04 323 查看
说明:

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();                             ----  这里面没有关闭喔 !!!
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  项目实战一