安卓数据库activeandroid框架
来源:互联网 发布:java夜校和java面授 编辑:程序博客网 时间:2024/04/28 13:02
1、实体类的注解(activeandroid框架:实现orm操作)
import java.io.Serializable;import com.activeandroid.Model;import com.activeandroid.annotation.Column;import com.activeandroid.annotation.Table;@Table(name = "in_cart")public class InCart extends Model implements Serializable, Cloneable { /** * */ private static final long serialVersionUID = -3584698829991048916L; @Column String goodsId; //id @Column String goodsName; //名称 @Column String goodsIcon; //图片 @Column String goodsType; //种类 @Column double goodsPrice; //价格 @Column String goodsPercent; //好评 @Column int goodsComment; //评论人数 @Column int isPhone; //是否手机专享 @Column int isFavor; //是否已关注 @Column int num; //购物车中数量 public InCart(){} public InCart(String goodsId, String goodsName, String goodsIcon, String goodsType, double goodsPrice, String goodsPercent, int goodsComment, int isPhone, int isFavor, int num) { super(); this.goodsId = goodsId; this.goodsName = goodsName; this.goodsIcon = goodsIcon; this.goodsType = goodsType; this.goodsPrice = goodsPrice; this.goodsPercent = goodsPercent; this.goodsComment = goodsComment; this.isPhone = isPhone; this.isFavor = isFavor; this.num = num; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + goodsComment; result = prime * result + ((goodsIcon == null) ? 0 : goodsIcon.hashCode()); result = prime * result + ((goodsId == null) ? 0 : goodsId.hashCode()); result = prime * result + ((goodsName == null) ? 0 : goodsName.hashCode()); result = prime * result + ((goodsPercent == null) ? 0 : goodsPercent.hashCode()); long temp; temp = Double.doubleToLongBits(goodsPrice); result = prime * result + (int) (temp ^ (temp >>> 32)); result = prime * result + ((goodsType == null) ? 0 : goodsType.hashCode()); result = prime * result + isFavor; result = prime * result + isPhone; result = prime * result + num; return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (!super.equals(obj)) return false; if (getClass() != obj.getClass()) return false; InCart other = (InCart) obj; if (goodsComment != other.goodsComment) return false; if (goodsIcon == null) { if (other.goodsIcon != null) return false; } else if (!goodsIcon.equals(other.goodsIcon)) return false; if (goodsId == null) { if (other.goodsId != null) return false; } else if (!goodsId.equals(other.goodsId)) return false; if (goodsName == null) { if (other.goodsName != null) return false; } else if (!goodsName.equals(other.goodsName)) return false; if (goodsPercent == null) { if (other.goodsPercent != null) return false; } else if (!goodsPercent.equals(other.goodsPercent)) return false; if (Double.doubleToLongBits(goodsPrice) != Double .doubleToLongBits(other.goodsPrice)) return false; if (goodsType == null) { if (other.goodsType != null) return false; } else if (!goodsType.equals(other.goodsType)) return false; if (isFavor != other.isFavor) return false; if (isPhone != other.isPhone) return false; if (num != other.num) return false; return true; } public String getGoodsId() { return goodsId; } public void setGoodsId(String goodsId) { this.goodsId = goodsId; } public String getGoodsName() { return goodsName; } public void setGoodsName(String goodsName) { this.goodsName = goodsName; } public String getGoodsIcon() { return goodsIcon; } public void setGoodsIcon(String goodsIcon) { this.goodsIcon = goodsIcon; } public String getGoodsType() { return goodsType; } public void setGoodsType(String goodsType) { this.goodsType = goodsType; } public double getGoodsPrice() { return goodsPrice; } public void setGoodsPrice(double goodsPrice) { this.goodsPrice = goodsPrice; } public String getGoodsPercent() { return goodsPercent; } public void setGoodsPercent(String goodsPercent) { this.goodsPercent = goodsPercent; } public int getGoodsComment() { return goodsComment; } public void setGoodsComment(int goodsComment) { this.goodsComment = goodsComment; } public int getIsPhone() { return isPhone; } public void setIsPhone(int isPhone) { this.isPhone = isPhone; } public int getIsFavor() { return isFavor; } public void setIsFavor(int isFavor) { this.isFavor = isFavor; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } @Override public InCart clone() { return new InCart(goodsId, goodsName, goodsIcon, goodsType, goodsPrice, goodsPercent, goodsComment, isPhone, isFavor, num); }}
2、通过实体类进行操作数据库数据:
///通过Id查找数据----------(1)InCart inCart = new Select().from(InCart.class) .where("goodsId=?", mInCart.getGoodsId()).executeSingle(); if (inCart != null) { // 若购物车中有,则数量+1 inCart.setNum(inCart.getNum() + 1); //保存数据------------(2) inCart.save(); } else { mInCart.save(); }
3、广播通知其他界面更新UI的数据
(1)、购物车中:FragmentActivity
—->通过注册的广播标识来通知其他界面:
///////仅仅只通知,不关闭她的本界面:
// 通知主页刷新购物车商品数 Intent intent = new Intent(); intent.setAction(Constants.BROADCAST_FILTER.FILTER_CODE); intent.putExtra(Constants.BROADCAST_FILTER.EXTRA_CODE, Constants.INTENT_KEY.REFRESH_INCART); sendBroadcast(intent);
/////////跳转到购物车的界面并更新数据:
/** * 跳转到首页购物车 */ private void gotoHomePage() { startActivity(new Intent(this, MainActivity.class)); Intent intent = new Intent(); intent.setAction(Constants.BROADCAST_FILTER.FILTER_CODE); intent.putExtra(Constants.BROADCAST_FILTER.EXTRA_CODE, Constants.INTENT_KEY.FROM_DETAIL); sendBroadcast(intent); finish(); overridePendingTransition(0, 0); }
(2)、主页的广播注册:
// 注册广播接收者 receiver = new MyReceiver(); //broadcast_filter IntentFilter filter = new IntentFilter( Constants.BROADCAST_FILTER.FILTER_CODE); registerReceiver(receiver, filter);
//////广播:
class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String extra = intent .getStringExtra(Constants.BROADCAST_FILTER.EXTRA_CODE); if (extra.equals(Constants.INTENT_KEY.FROM_FAVOR)) { isFromFavor = true; } /////+++++初始化购物车显示数据空间 else if (extra.equals(Constants.INTENT_KEY.REFRESH_INCART)) { initInCartNum(); } } }
具体的操作:
//1保存:
mInCart = new InCart("1", "避孕套", "", "成人用品", 23.00, "333dd", 1, 1, 1, 1); mInCart.save();
//2修改:
String index = mInCart.getGoodsId(); InCart inCart = new Select().from(InCart.class).where("goodsId=?", index).executeSingle(); if (inCart != null) { // 若购物车中有,则数量+1 inCart.setNum(inCart.getNum() + 1); inCart.save(); settxt(inCart.getGoodsId(), inCart.getNum(), new Select().from(InCart.class).execute().size()); }
////删除:
List<InCart> incart = new Select().from(InCart.class).execute(); Long iiii=incart.get(0).getId(); InCart item = InCart.load(InCart.class, iiii); item.delete();
二、ToDoDB的数据实现:
public class ToDoDB extends SQLiteOpenHelper { private final static String DATABASE_NAME = "yamadv_db"; private final static int DATABASE_VERSION = 3; /* * 新建购物车的信息表 */ private final static String TABLE_NAME = "mycart_table"; public final static String FIELD_id = "_id"; public final static String cartType = "cart_Type"; public final static String taocanId = "tancan_Id"; public final static String cartCount = "cart_Count"; public final static String proId = "pro_Id"; public final static String prodimg = "prod_img"; public final static String prodname = "prod_name"; public final static String proddanjia = "prod_danjia"; public ToDoDB(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } /* * +++++++++++++++++++++++++++++++++++++++++++++++++++购物车的操作 */ public void onCreate(SQLiteDatabase db) { String sql = "CREATE TABLE " + TABLE_NAME + " (" + FIELD_id + " INTEGER primary key autoincrement, " + proId + " INTEGER, " + cartType + " text, " + taocanId + " text, " + prodimg + " text, " + prodname + " text, " + proddanjia + " INTEGER, " + cartCount + " INTEGER)"; db.execSQL(sql); } public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { String sql = "DROP TABLE IF EXISTS " + TABLE_NAME; db.execSQL(sql); onCreate(db); } public Cursor select() { SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db .query(TABLE_NAME, null, null, null, null, null, null); return cursor; } public long insert(int id, String types, String colors, int counts, String proimg,String proname,int paodanjia) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put(proId, id); cv.put(cartType, types); cv.put(taocanId, colors); cv.put(cartCount, counts); cv.put(prodimg, proimg); cv.put(prodname, proname); cv.put(proddanjia, paodanjia); long row = db.insert(TABLE_NAME, null, cv); return row; } public void delete(int id) { SQLiteDatabase db = this.getWritableDatabase(); String where = FIELD_id + " = ?"; String[] whereValue = { Integer.toString(id) }; db.delete(TABLE_NAME, where, whereValue); } public void update(int id, int proid, String types, String colors, int counts) { SQLiteDatabase db = this.getWritableDatabase(); String where = FIELD_id + " = ?"; String[] whereValue = { Integer.toString(id) }; ContentValues cv = new ContentValues(); cv.put(proId, proid); cv.put(cartType, types); cv.put(taocanId, colors); cv.put(cartCount, counts); db.update(TABLE_NAME, cv, where, whereValue); } public void updatecount(int id, int counts) { SQLiteDatabase db = this.getWritableDatabase(); String where = FIELD_id + " = ?"; String[] whereValue = { Integer.toString(id) }; ContentValues cv = new ContentValues(); cv.put(cartCount, counts); db.update(TABLE_NAME, cv, where, whereValue); }}
////相关操作:
(1)、查询:
myToDoDB = new ToDoDB(BadyDetilActivity.this);/* 取得DataBase里的数据 */myCursor = myToDoDB.select();
////////从查询的table中获取一条数据:
/* 将myCursor移到所点击的值 */myCursor.moveToPosition(0);/* 取得字段_id的值 */int _id = myCursor.getInt(0);
(2)、新增:
// ++++++++++++++++++++++++++++++++新增操作 private void addTodo(int id, String types, String cantanID, int counts, String img, String pname, int danjia) { /* 添加数据到数据库 */ myToDoDB.insert(id, types, cantanID, counts, img, pname, danjia); /* 重新查询 */ myCursor.requery(); }
三、xutils的dbxuils的使用:
需要的权限<uses-permissionandroid:name="android.permission.INTERNET"/> <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>创建数据库 DaoConfig config = new DaoConfig(context); config.setDbName("xUtils-demo"); //db名 config.setDbVersion(1); //db版本 DbUtils db = DbUtils.create(config);//db还有其他的一些构造方法,比如含有更新表版本的监听器的创建表 db.createTableIfNotExist(User.class); //创建一个表User db.save(user);//在表中保存一个user对象。最初执行保存动作时,也会创建User表删除表 db.dropTable(User.class); 开启事务 db.configAllowTransaction(true);db相关Annotation @Check check约束 @Column 列名 @Finder 一对多、多对一、多对多关系(见sample的Parent、Child中的使用) @Foreign 外键 @Id 主键,当为int类型时,默认自增。 非自增时,需要设置id的值 @NoAutoIncrement 不自增 @NotNull 不为空 @Table 表名 @Transient 不写入数据库表结构 @Unique 唯一约束
//////////相关常用法:
DbUtils db = DbUtils.create(this);User user = new User(); //这里需要注意的是User对象必须有id属性,或者有通过@ID注解的属性user.setEmail("wyouflf@qq.com");user.setName("wyouflf");db.save(user); // 使用saveBindingId保存实体时会为实体的id赋值...// 查找Parent entity = db.findById(Parent.class, parent.getId());List<Parent> list = db.findAll(Parent.class);//通过类型查找Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","=","test"));// IS NULLParent Parent = db.findFirst(Selector.from(Parent.class).where("name","=", null));// IS NOT NULLParent Parent = db.findFirst(Selector.from(Parent.class).where("name","!=", null));// WHERE id<54 AND (age>20 OR age<30) ORDER BY id LIMIT pageSize OFFSET pageOffsetList<Parent> list = db.findAll(Selector.from(Parent.class) .where("id" ,"<", 54) .and(WhereBuilder.b("age", ">", 20).or("age", " < ", 30)) .orderBy("id") .limit(pageSize) .offset(pageSize * pageIndex));// op为"in"时,最后一个参数必须是数组或Iterable的实现类(例如List等)Parent test = db.findFirst(Selector.from(Parent.class).where("id", "in", new int[]{1, 2, 3}));// op为"between"时,最后一个参数必须是数组或Iterable的实现类(例如List等)Parent test = db.findFirst(Selector.from(Parent.class).where("id", "between", new String[]{"1", "5"}));DbModel dbModel = db.findDbModelAll(Selector.from(Parent.class).select("name"));//select("name")只取出name列List<DbModel> dbModels = db.findDbModelAll(Selector.from(Parent.class).groupBy("name").select("name", "count(name)"));...//例:分组聚合查询出 Parent表中 非重复的name和它的对应数量List<DbModel> dbModels = db.findDbModelAll(Selector.form(Parent.class).select("distinct name,count(name) as num").groupBy("name")); db.execNonQuery("sql") // 执行自定义sql...
1 1
- 安卓数据库activeandroid框架
- 自己比较喜欢用的安卓数据库框架ActiveAndroid
- 安卓ORM框架之activeandroid
- Android中ORM数据库轻量级框架---ActiveAndroid
- ActiveAndroid数据库框架简单应用和配置
- Android之数据库框架ActiveAndroid的使用
- ActiveAndroid 数据库
- android ORM数据库框架ActiveAndroid的简单使用
- 【Android进阶】-Android ORM数据库框架 ActiveAndroid入门
- 玩转Android之数据库框架ActiveAndroid的使用
- 安卓ORMLite数据库框架
- ORM轻量级框架---ActiveAndroid
- Android ORM 框架ActiveAndroid
- ORM轻量级框架---ActiveAndroid
- ActiveAndroid 管理数据库操作
- ActiveAndroid 管理数据库
- ActiveAndroid 管理数据库
- ActiveAndroid 管理数据库
- SMB CIFS Samba NFS NAS
- 四类文法
- 工作的小问题及解决
- jeecg3.6 maven版入门学习
- C++中的类所占内存空间总结
- 安卓数据库activeandroid框架
- 设置CATALINA_HOME环境变量
- 电力企业信息化建设方案之调度信息报送系统
- KING_Unity学习之UGUI_Canvas渲染顺序以及层次关系总结
- [Android]在安桌客户端解析json字符串
- centos添加普通用户,操作权限设置
- Android ViewPager+HorizontalScrollView实现标题栏滑动(腾讯新闻)
- GCD--队列的类型和执行任务方式的四种的排列组合
- 黑马程序员——抽象类与接口