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