Android快速SDK(3)数据库Sqlite

这篇博客详细介绍了如何在Android中使用SQLite数据库进行基本操作,包括建表、查询、插入、更新和删除。提供了具体的代码示例,如创建FileService类,实现了自定义的监听器(如SelectListener、InsertListener、UpdateListener、DeleteListener)来执行各种数据库操作。此外,还展示了如何进行对象存储和读取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码:http://download.youkuaiyun.com/detail/huangbin95487710/9257961

依赖包模式

完整运行还需要用到以下依赖包

  1. 建表
    • 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;
      	}

  2. 查询操作
    • 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;
  3. 插入操作
    • 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);
  4. 更新操作
    • 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);
  5. 删除操作
    • DeleteListener mListener = new DeleteListener() {
      			@Override
      			public void addWhere() {
      				// 条件
      				add(FILED_UID + " >= ", 0);
      			}
      		};
      		openHelper.doOperator(this, mListener);
  6. 联合表操作
    • 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;


  7. 对象存储
    • 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);
       
       
  8. 对象读取
    • // 读取对象数据
      FileBase mBase = (FileBase) mObjectService.getObject("test");
    • // 读取对象数据
      ArrayList<FileBase> mBase = (ArrayList<FileBase>) mObjectService.getObject("test_list");
       
  9. 代码示例
    • 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;
      	}
      
      }


       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值