public class SQLiteHelperOrm extends OrmLiteSqliteOpenHelper {
private static final String TAG="SQLiteHelperOrm";
private static final String DATABASE_NAME = "mplay.db";
private static final int DATABASE_VERSION = 3;
public SQLiteHelperOrm(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public SQLiteHelperOrm() {
super(BaseCookie.getContext(), DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) {
try {
TableUtils.createTable(connectionSource, POTest.class);
TableUtils.createTable(connectionSource, POPriorityText.class);
} catch (SQLException e) {
LogUtil.e(TAG,"onCreate",e);
}
}
@Override
public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int arg2, int arg3) {
try {
TableUtils.dropTable(connectionSource, POTest.class, true);
TableUtils.dropTable(connectionSource, POPriorityText.class, true);
onCreate(db, connectionSource);
} catch (SQLException e) {
LogUtil.e(TAG,"onUpgrade",e);
}
}
}
public class DbHelper<T> {
private static final String TAG="DbHelper";
/** 新增一条记录 */
public int create(T po) {
SQLiteHelperOrm db = new SQLiteHelperOrm();
try {
Dao dao = db.getDao(po.getClass());
return dao.create(po);
} catch (SQLException e) {
LogUtil.e(TAG,"create",e);
} finally {
if (db != null)
db.close();
}
return -1;
}
public boolean exists(T po, Map<String, Object> where) {
SQLiteHelperOrm db = new SQLiteHelperOrm();
try {
Dao dao = db.getDao(po.getClass());
if (dao.queryForFieldValues(where).size() > 0) {
return true;
}
} catch (SQLException e) {
LogUtil.e(TAG,"exists",e);
} finally {
if (db != null)
db.close();
}
return false;
}
public int createIfNotExists(T po, Map<String, Object> where) {
SQLiteHelperOrm db = new SQLiteHelperOrm();
try {
Dao dao = db.getDao(po.getClass());
if (dao.queryForFieldValues(where).size() < 1) {
return dao.create(po);
}
} catch (SQLException e) {
LogUtil.e(TAG,"createIfNotExists",e);
} finally {
if (db != null)
db.close();
}
return -1;
}
/** 查询一条记录 */
public List<T> queryForEq(Class<T> c, String fieldName, Object value) {
SQLiteHelperOrm db = new SQLiteHelperOrm();
try {
Dao dao = db.getDao(c);
return dao.queryForEq(fieldName, value);
} catch (SQLException e) {
LogUtil.e(TAG,"queryForEq",e);
} finally {
if (db != null)
db.close();
}
return new ArrayList<T>();
}
/** 删除一条记录 */
public int remove(T po) {
SQLiteHelperOrm db = new SQLiteHelperOrm();
try {
Dao dao = db.getDao(po.getClass());
return dao.delete(po);
} catch (SQLException e) {
LogUtil.e(TAG,"remove",e);
} finally {
if (db != null)
db.close();
}
return -1;
}
/**
* 根据特定条件更新特定字段
*
* @param c
* @param values
* @param columnName where字段
* @param value where值
* @return
*/
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public int update(Class<T> c, ContentValues values, String columnName, Object value) {
SQLiteHelperOrm db = new SQLiteHelperOrm();
try {
Dao dao = db.getDao(c);
UpdateBuilder<T, Long> updateBuilder = dao.updateBuilder();
updateBuilder.where().eq(columnName, value);
for (String key : values.keySet()) {
updateBuilder.updateColumnValue(key, values.get(key));
}
return updateBuilder.update();
} catch (SQLException e) {
LogUtil.e(TAG,"update",e);
} finally {
if (db != null)
db.close();
}
return -1;
}
/** 更新一条记录 */
public int update(T po) {
SQLiteHelperOrm db = new SQLiteHelperOrm();
try {
Dao dao = db.getDao(po.getClass());
return dao.update(po);
} catch (SQLException e) {
LogUtil.e(TAG,"update",e);
} finally {
if (db != null)
db.close();
}
return -1;
}
/** 查询所有记录 */
public List<T> queryForAll(Class<T> c) {
SQLiteHelperOrm db = new SQLiteHelperOrm();
try {
Dao dao = db.getDao(c);
return dao.queryForAll();
} catch (SQLException e) {
LogUtil.e(TAG,"queryForAll",e);
} finally {
if (db != null)
db.close();
}
return new ArrayList<T>();
}
}
public class POTest {
@DatabaseField(generatedId = true)
public long _id;
/** 标题 */
@DatabaseField
public String title;
/** 标题 */
@DatabaseField
public int position;
public POTest(long _id, String title, int position) {
super();
this._id = _id;
this.title = title;
this.position = position;
}
public POTest() {
super();
}
}