您的位置:首页 > 移动开发 > Android开发

Android Sqlite数据库的操作,其中包含不重复添加数据

2016-08-12 11:32 609 查看
首先创建数据库
public class MySqLite extends SQLiteOpenHelper {

public MySqLite(Context context, String name, CursorFactory factory,
int version, DatabaseErrorHandler errorHandler) {
super(context, name, factory, version, errorHandler);
}

public MySqLite(Context context) {
super(context, "MySqLite", null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table myshop(id varchar(20), num varchar(20),title varchar(200),yushu varchar(20),head varcha(200),qishu varchar(20))");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
然后给数据库添加数据,其中的shopDataList是查询数据后,存放数据的ArrayList
private void addShop() {

ContentValues contentValues = new ContentValues();
//判断数据库是否是空的,如果是空的直接添加数据,如果不是空的则需要判断数据库里是否已经存在这条数据
if (shopDataList.size() > 0) {
for (int i = 0; i < shopDataList.size(); i++) {

if (shopDataList.get(i).getId().equals(usid)) {
// 当该数据库已经包含现在想添加的数据时,清空contentValues;
contentValues.clear();
ToastUtil.getShortToastByString(GoodsDetailActivity.this,
"该商品已在购物车里,请勿重复添加");
// 当该数据库已经包含现在想添加的数据时,跳出循环
return;
} else {
// contentValues 添加数据
contentValues.put("id", usid);// id
contentValues.put("num", 1);// 数量
contentValues.put("title", goods_detail_info.getTitle());// 标题
contentValues.put("yushu",
goods_detail_info.getShenyurenshu());// 余数
contentValues.put("head", AppConfig.SERVER_IMG
+ goods_detail_info.getThumb());// 头像
contentValues.put("qishu", goods_detail_info.getQishu());// 期数
ToastUtil.getShortToastByString(GoodsDetailActivity.this,
"加入购物车成功");
}
}
// 把contentValues里的数据添加到数据库里
mDb.insert("myshop", null, contentValues);
} else {
contentValues.put("id", usid);// id
contentValues.put("num", 1);// 数量
contentValues.put("title", goods_detail_info.getTitle());// 标题
contentValues.put("yushu", goods_detail_info.getShenyurenshu());// 余数
contentValues.put("head",
AppConfig.SERVER_IMG + goods_detail_info.getThumb());// 头像
contentValues.put("qishu", goods_detail_info.getQishu());// 期数
// 把contentValues里的数据添加到数据库里
mDb.insert("myshop", null, contentValues);
ToastUtil
.getShortToastByString(GoodsDetailActivity.this, "加入购物车成功");
}
}

删除数据库,删除数据的按钮是在ListView里面,所以我在Adapter里写了一个接口回调,用来删除数据

@Override
public void onDelListener(String useId) {
<span style="white-space:pre">		</span>//查询数据库
for (int i = 0; i < cursor.getCount(); i++) {
// 根据cursor的长度来获取数据
cursor.moveToPosition(i);
String id = cursor.getString(cursor.getColumnIndex("id"));

if (useId.equals(id)) {
//根据id删除数据库里的某条数据
mDb.delete("myshop", "id=?", new String[] { id });
ToastUtil.getShortToastByString(getActivity(), "删除成功");
}

}
}
修改数据库,修改数据的按钮是在ListView里面,所以我在Adapter里写了一个接口回调,用来修改数据

public void onSubtractListener(String useId) {
//查询数据库
for (int i = 0; i < cursor.getCount(); i++) {
// 根据cursor的长度来获取数据
cursor.moveToPosition(i);
String id = cursor.getString(cursor.getColumnIndex("id"));
String num = cursor.getString(cursor.getColumnIndex("num"));

if (useId.equals(id)) {

int valueOf = Integer.valueOf(num);
valueOf--;

if (valueOf < 0) {
//当商品数量为0时就不给修改数据
ToastUtil.getShortToastByString(getActivity(), "商品数量不能小于0");
} else {
//把要修改的数据丢到contentValues里
ContentValues contentValues = new ContentValues();
contentValues.put("num", valueOf + "");
//根据id修改数据
mDb.update("myshop", contentValues, "id = ?",
new String[] { id });
ToastUtil.getShortToastByString(getActivity(), "删除成功");

}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: