代码:http://download.youkuaiyun.com/detail/huangbin95487710/9257961
依赖包模式
完整运行还需要用到以下依赖包
- 建表
private static final String TABLE = "file"; private static final String FILED_UID = "uid"; private static final String FILED_NAME = "name"; private static final String FILED_PATH = "path"; private static final String FILED_SIZE = "size"; private static final String FILED_DATE = "date"; private static final String FILED_READ = "read"; private static final ArrayList<DBData> FILED = new ArrayList<DBData>( Arrays.asList( /*** 添加表字段 **/ new DBData(),// 自增长ID,必须要的 new DBData(FILED_UID, Integer.class),// 文件ID new DBData(FILED_NAME, 25),// 文件名称 new DBData(FILED_PATH, 100),// 文件路径 new DBData(FILED_SIZE, long.class),// 文件大小 new DBData(FILED_DATE, long.class),// 文件日期 new DBData(FILED_READ, boolean.class)// 读取状态 )); @Override public String getTableName() { // TODO Auto-generated method stub return TABLE; } @Override public ArrayList<DBData> getTableFiled() { // TODO Auto-generated method stub return FILED; }
- 查询操作
SelectListener mListener = new SelectListener() { @Override public String[] getFiled() { // 查询字段 return new String[] { FILED_UID }; } @Override public Object parseCursor(Cursor mCursor) { // 解析内容 if (mCursor != null && mCursor.moveToNext()) return false; return true; } @Override public void addWhere() { // 添加条件 add(FILED_UID, uid); } }; Boolean mResult = (Boolean) openHelper.doOperator(this, mListener); if (mResult == null) return true; else return mResult;
- 插入操作
InsertListener mListener = new InsertListener() { @Override public String[] getFiled() { // 对应字段 return new String[] { FILED_UID, FILED_NAME, FILED_PATH, FILED_SIZE, FILED_DATE, FILED_READ }; } @Override public void addValue() { // 对应值 addValue(mFileBase.mUid); addValue(mFileBase.mName); addValue(mFileBase.mPath); addValue(mFileBase.mSize); addValue(mFileBase.mDate); addValue(mFileBase.mIsRead); } }; openHelper.doOperator(this, mListener);
- 更新操作
UpdateListener mListener = new UpdateListener() { @Override public String[] getFiled() { // 更新字段 return new String[] { FILED_SIZE }; } @Override public void updateValue() { // 更新内容 updateValue(filesize); } @Override public void addWhere() { // 添加条件 add(FILED_UID, uid); } }; openHelper.doOperator(this, mListener);
- 删除操作
DeleteListener mListener = new DeleteListener() { @Override public void addWhere() { // 条件 add(FILED_UID + " >= ", 0); } }; openHelper.doOperator(this, mListener);
- 联合表操作
SelectJoinListener mListener = new SelectJoinListener() { @Override public String[] getFiled() { // 查询字段 return new String[] { TABLE + "." + FILED_KEY, TABLE + "." + FILED_TYPE, TABLE + "." + FILED_STATE, TABLE + "." + FILED_NAME, TABLE + "." + FILED_VERSION, TABLE + "." + FILED_URL, TABLE + "." + FILED_IMAGE, TABLE + "." + FILED_SIZE, TABLE + "." + FILED_DATE, TABLE + "." + FILED_STAR, TABLE + "." + FILED_MARK, mDownThreadService.getTableName() + "." + DownThreadService.FILED_POSITION }; } @Override public Object parseCursor(Cursor mCursor) { // 解析内容 ArrayList<DownLoadBase> markbase = new ArrayList<DownLoadBase>(); while (mCursor != null && mCursor.moveToNext()) { markbase.add((DownLoadBase) parseCursorBase(mCursor)); } return markbase; } @Override public void addWhere() { // 添加条件 add(TABLE + "." + FILED_STATE, DownLoadBase.STATE_OK); addOr(TABLE + "." + FILED_STATE, DownLoadBase.STATE_INSTALL); } @Override public String getJoginTableName() { // TODO Auto-generated method stub return mDownThreadService.getTableName(); } @Override public String getJoginOnKey() { // TODO Auto-generated method stub return FILED_KEY; } }; ArrayList<DownLoadBase> mResult = (ArrayList<DownLoadBase>) openHelper .doOperator(this, mListener); return mResult;
- 对象存储
mObjectService = new ObjectService(this); // 插入对象数据 mObjectService.updateObject("test", new FileBase());
// 插入对象数据 ArrayList<FileBase> mAllFile = new ArrayList<FileBase>(); mAllFile.add(new FileBase()); mAllFile.add(new FileBase()); mAllFile.add(new FileBase()); mObjectService.updateObject("test_list", mAllFile);
- 对象读取
// 读取对象数据 FileBase mBase = (FileBase) mObjectService.getObject("test");
// 读取对象数据 ArrayList<FileBase> mBase = (ArrayList<FileBase>) mObjectService.getObject("test_list");
- 代码示例
package cn.whonow.whonow.db; import java.util.ArrayList; import java.util.Arrays; import General.DB.DB; import General.System.MyLog; import android.content.Context; public class DBHelper extends DB { private static final String DBNAME = "test.db"; private static final int VERSION = 4; private static final ArrayList<Class> TABLE = new ArrayList<Class>( Arrays.asList( /*** 添加表 **/ FileService.class /*** 添加表 **/ )); private static volatile DBHelper instance; public static synchronized DBHelper getInstance(Context mConetxt) { if (instance == null || DB.mContext == null) { DB.mContext = mConetxt; instance = new DBHelper(mConetxt); } return instance; } public DBHelper(Context mContext) { super(mContext, DBNAME, null, VERSION); } @Override public ArrayList<Class> getTable() { // TODO Auto-generated method stub MyLog.d(DB.class, "=========>TABLE:" + TABLE.size()); return TABLE; } }
package cn.whonow.whonow.db; import java.io.Serializable; public class FileBase implements Serializable { /** * */ private static final long serialVersionUID = 1L; public int mUid = 0; public String mName = ""; public String mPath = ""; public long mSize = 0; public long mDate = 0; public boolean mIsRead = false; public FileBase() { java.util.Random r = new java.util.Random(); int num = r.nextInt(10000); mUid = num; mName = "name:" + num; mPath = "path:" + num; mSize = num; mDate = num; if (num % 2 == 0) mIsRead = true; else mIsRead = false; } }
package cn.whonow.whonow.db; import java.util.ArrayList; import java.util.Arrays; import General.DB.DBData; import General.DB.DBService; import General.DB.Table.DeleteListener; import General.DB.Table.InsertListener; import General.DB.Table.SelectListener; import General.DB.Table.UpdateListener; import android.content.Context; import android.database.Cursor; /** * 文件操作数据库 * * @author HuangYi QQ:95487710 */ public class FileService extends DBService { private static final String TABLE = "file"; private static final String FILED_UID = "uid"; private static final String FILED_NAME = "name"; private static final String FILED_PATH = "path"; private static final String FILED_SIZE = "size"; private static final String FILED_DATE = "date"; private static final String FILED_READ = "read"; private static final ArrayList<DBData> FILED = new ArrayList<DBData>( Arrays.asList( /*** 添加表字段 **/ new DBData(),// 自增长ID,必须要的 new DBData(FILED_UID, Integer.class),// 文件ID new DBData(FILED_NAME, 25),// 文件名称 new DBData(FILED_PATH, 100),// 文件路径 new DBData(FILED_SIZE, long.class),// 文件大小 new DBData(FILED_DATE, long.class),// 文件日期 new DBData(FILED_READ, boolean.class)// 读取状态 )); @Override public String getTableName() { // TODO Auto-generated method stub return TABLE; } @Override public ArrayList<DBData> getTableFiled() { // TODO Auto-generated method stub return FILED; } @Override public Object parseCursorBase(Cursor mCursor) { // TODO Auto-generated method stub FileBase mFileBase = new FileBase(); mFileBase.mUid = getInt(mCursor, FILED_UID); mFileBase.mName = getString(mCursor, FILED_NAME); mFileBase.mPath = getString(mCursor, FILED_PATH); mFileBase.mSize = getLong(mCursor, FILED_SIZE); mFileBase.mDate = getLong(mCursor, FILED_DATE); mFileBase.mIsRead = getBoolean(mCursor, FILED_READ); return mFileBase; } private DBHelper openHelper; public FileService() { super(); } public FileService(Context context) { openHelper = DBHelper.getInstance(context); } /** * 判断是否是新的数据 * * @return */ public boolean isNewFile(final int uid) { SelectListener mListener = new SelectListener() { @Override public String[] getFiled() { // 查询字段 return new String[] { FILED_UID }; } @Override public Object parseCursor(Cursor mCursor) { // 解析内容 if (mCursor != null && mCursor.moveToNext()) return false; return true; } @Override public void addWhere() { // 添加条件 add(FILED_UID, uid); } }; Boolean mResult = (Boolean) openHelper.doOperator(this, mListener); if (mResult == null) return true; else return mResult; } /** * 更新文件大小 */ public void updateFileSize(final int uid, final int filesize) { if (filesize <= 0) return; if (isNewFile(uid)) { return; } UpdateListener mListener = new UpdateListener() { @Override public String[] getFiled() { // 更新字段 return new String[] { FILED_SIZE }; } @Override public void updateValue() { // 更新内容 updateValue(filesize); } @Override public void addWhere() { // 添加条件 add(FILED_UID, uid); } }; openHelper.doOperator(this, mListener); } /** * 增加新的任务 */ public void addNewFile(final FileBase mFileBase) { if (!isNewFile(mFileBase.mUid)) return; InsertListener mListener = new InsertListener() { @Override public String[] getFiled() { // 对应字段 return new String[] { FILED_UID, FILED_NAME, FILED_PATH, FILED_SIZE, FILED_DATE, FILED_READ }; } @Override public void addValue() { // 对应值 addValue(mFileBase.mUid); addValue(mFileBase.mName); addValue(mFileBase.mPath); addValue(mFileBase.mSize); addValue(mFileBase.mDate); addValue(mFileBase.mIsRead); } }; openHelper.doOperator(this, mListener); } /** * 增加大量任务 */ public void addAllFile(final ArrayList<FileBase> mAllFileBase) { InsertListener mListener = new InsertListener() { @Override public String[] getFiled() { // TODO Auto-generated method stub return new String[] { FILED_UID, FILED_NAME, FILED_PATH, FILED_SIZE, FILED_DATE, FILED_READ }; } @Override public void addValue() { // TODO Auto-generated method stub for (int mIndex = 0; mIndex < mAllFileBase.size(); mIndex++) { FileBase mFileBase = mAllFileBase.get(mIndex); addValue(mFileBase.mUid); addValue(mFileBase.mName); addValue(mFileBase.mPath); addValue(mFileBase.mSize); addValue(mFileBase.mDate); addValue(mFileBase.mIsRead); } } }; openHelper.doOperator(this, mListener); } /** * 删除文件 */ public void deleteFile() { DeleteListener mListener = new DeleteListener() { @Override public void addWhere() { // 条件 add(FILED_UID + " >= ", 0); } }; openHelper.doOperator(this, mListener); } /** * 获取所有文件 * * @return */ public ArrayList<FileBase> getAllFile() { SelectListener mListener = new SelectListener() { @Override public String[] getFiled() { // TODO Auto-generated method stub return null; } @Override public Object parseCursor(Cursor mCursor) { // TODO Auto-generated method stub ArrayList<FileBase> mBase = new ArrayList<FileBase>(); while (mCursor != null && mCursor.moveToNext()) { mBase.add((FileBase) parseCursorBase(mCursor)); } return mBase; } @Override public void addWhere() { // TODO Auto-generated method stub } }; ArrayList<FileBase> mResult = (ArrayList<FileBase>) openHelper .doOperator(this, mListener); if (mResult == null) return new ArrayList<FileBase>(); else return mResult; } }