找呀志_使用SQLiteDatabase增删改提供的搜索方法和事务
知识具体解释:http://blog.csdn.net/zhaoyazhi2129/article/details/9026093
MainActivity.java,User.java,BaseDao.java,UserDao.java同上篇
UserDaoImple.java
package com.example.android_sqlite.dao.impl; import java.util.ArrayList;
import java.util.List; import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; import com.example.android_sqlite.dao.UserDao;
import com.example.android_sqlite.database.DatabaseHelper;
import com.example.android_sqlite.domain.Users; public class UserDaoImpl implements UserDao {
// 依赖对象
private DatabaseHelper dh; // 通过数据库的构造器实例化
public UserDaoImpl(DatabaseHelper databaseHelper) {
this.dh = databaseHelper;
} @Override
public boolean insert(Users entity) {
// 定义返回值
boolean flag = false;
// 得到数据库操作对象
SQLiteDatabase db = dh.getWritableDatabase();
// 封装的參数
ContentValues values = new ContentValues();
values.put("userid", entity.getUserId());
values.put("username", entity.getUserName());
values.put("userage", entity.getUserAge());
values.put("usersalary", entity.getUserSalary()); // 參数1:表名。參数2:缺省的列的名称。參数3:插入数据
long id = db.insert("users", null, values);
// 对插入的返回值进行推断
if (id != -1) {
flag = true;
}
return flag; } @Override
public boolean update(Users entity) {
// 定义返回值
boolean flag = false;
// 得到数据库操作对象
SQLiteDatabase db = dh.getWritableDatabase();
// 封装的參数
ContentValues values = new ContentValues();
values.put("userid", entity.getUserId());
values.put("username", entity.getUserName());
values.put("userage", entity.getUserAge());
values.put("usersalary", entity.getUserSalary()); int num = db.update("users", values, "userid=?",
new String[] { entity.getUserId() + "" });
// 对插入的返回值进行推断
if (num > 0) {
flag = true;
}
return flag;
} @Override
public boolean delete(Users entity) { return deleteByid(entity.getUserId());
} @Override
public boolean deleteByid(Integer id) {
// 定义返回值
boolean flag = false;
// 得到数据库操作对象
SQLiteDatabase db = dh.getWritableDatabase();
// 參数1:表名。參数2:缺省的列的名称,參数3:插入数据
int num = db.delete("users", "userid=?", new String[] { id + "" });
// 删除所有
// int num = db.delete("users", null,null);
// 对插入的返回值进行推断
if (num > 0) {
flag = true;
}
return flag;
} @Override
public Users findByid(Integer id) {
Users entity = null; SQLiteDatabase db = dh.getWritableDatabase();
Cursor c = db.query("users", new String[] { "userid", "username",
"userage", "usersalary" }, "userid=? ",
new String[] { id + "" }, null, null, null);
if (c.moveToNext()) { entity = new Users();
entity.setUserId(c.getInt(c.getColumnIndex("userid")));
entity.setUserName(c.getString(c.getColumnIndex("userid")));
entity.setUserAge(c.getInt(c.getColumnIndex("userage")));
entity.setUserSalary(c.getDouble(c.getColumnIndex("usersalary")));
}
return entity;
} @Override
public List<Users> findAll() {
List<Users> entities = new ArrayList<Users>(); SQLiteDatabase db = dh.getWritableDatabase();
Cursor c = db.query("users", new String[] { "userid", "username",
"userage", "usersalary" }, null, null, null, null, null);
while (c.moveToNext()) {
Users entity = new Users();
entity.setUserId(c.getInt(c.getColumnIndex("userid")));
entity.setUserName(c.getString(c.getColumnIndex("userid")));
entity.setUserAge(c.getInt(c.getColumnIndex("userage")));
entity.setUserSalary(c.getDouble(c.getColumnIndex("usersalary")));
entities.add(entity);
} return entities;
} public void transaction() {
SQLiteDatabase db = dh.getReadableDatabase();
//開始事务
db.beginTransaction();
try {
db.execSQL("update users set usersalary=? where userid=?",
new Object[] { 3000, 11 });
db.execSQL("update users set usersalary=? where userid=?",
new Object[] { 2000, 12 });
db.setTransactionSuccessful();// 设置事务标志为成功,在事务结束时才会提供事务,否则回滚事务 } catch (Exception e) {
e.printStackTrace();
} finally {
//假设没有成功回滚事务
db.endTransaction();
} } }
DatabaseTese.java
package com.example.android_sqlite.test; import java.util.List; import com.example.android_sqlite.dao.UserDao;
import com.example.android_sqlite.dao.impl.UserDaoImpl;
import com.example.android_sqlite.database.DatabaseHelper;
import com.example.android_sqlite.domain.Users; import android.test.AndroidTestCase; public class DatabaseTese extends AndroidTestCase { public void createDatabase() {
DatabaseHelper dh = new DatabaseHelper(getContext());
dh.getWritableDatabase();
} public void insert() {
DatabaseHelper databaseHelper = new DatabaseHelper(getContext());
UserDao userDao = new UserDaoImpl(databaseHelper);
Users entity = new Users(null, "zhangsan", 20, 4000.0);
boolean flag = userDao.insert(entity);
assertEquals(true, flag);
} public void update() {
DatabaseHelper databaseHelper = new DatabaseHelper(getContext());
UserDao userDao = new UserDaoImpl(databaseHelper);
Users entity = new Users(8, "aaa", 21, 3000.0);
boolean flag = userDao.update(entity);
assertEquals(true, flag);
} public void delete() {
DatabaseHelper databaseHelper = new DatabaseHelper(getContext());
UserDao userDao = new UserDaoImpl(databaseHelper);
Users entity = new Users(6, "", null, null);
boolean flag = userDao.delete(entity);
assertEquals(true, flag);
} public void findById() {
DatabaseHelper databaseHelper = new DatabaseHelper(getContext());
UserDao userDao = new UserDaoImpl(databaseHelper);
Users entity = userDao.findByid(3);
if (entity != null) {
System.out.println(entity.toString());
} else {
System.out.println("no message");
} } public void findAll() {
DatabaseHelper databaseHelper = new DatabaseHelper(getContext());
UserDao userDao = new UserDaoImpl(databaseHelper);
List<Users> entities = userDao.findAll();
for (Users entity : entities) {
System.out.println(entity.toString());
}
} // 有关事务的处理方式
public void testTransaction() {
DatabaseHelper databaseHelper = new DatabaseHelper(getContext());
UserDaoImpl userDaoImpl = new UserDaoImpl(databaseHelper); userDaoImpl.transaction(); } }
版权声明:本文博客原创文章,博客,未经同意,不得转载。
找呀志_使用SQLiteDatabase增删改提供的搜索方法和事务的更多相关文章
- Python笔记·第五章—— 列表(List) 的增删改查及其他方法
一.列表的简介 列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[ ]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:li = ...
- 列表(List) 的增删改查及其他方法
一.列表的简介 列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[ ]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:li = ...
- 用DBContext (EF) 实现通用增删改查的REST方法
我们用ADO.NET Entity Data Model来生成实体类后,一般都会对这些类进行基本的增删改查操作,如果每个类都要写这些基本的方法,实在太乏味了.下面就是通过step by step的方式 ...
- win7 创建vhd提示“找不到指定文件的虚拟磁盘支持提供程序”解决方法
本文参照:https://itbbs.pconline.com.cn/diy/16509116_2.html 14楼中"坚持不放弃"用户的答案得到解决 问题复现: 1.window ...
- Django基础学习四_数据库的增删改查
今天主要学习两个东西 1.如何对数据库做增删改查 2.如果将数据库中的数据用html的方式返回到前台 一.对数据库中增删改查操作 1.首先需要先见表,见表的方法我们在“http://www.cnblo ...
- Entity Framework增删改之通用精简方法
用EF用了好长一段时间了,从EF4.0的版本开始接触,感觉这个ORM不能说性能是最好的,但是我个人感觉功能实现以及和mvc的结合还是一个不错的企业级网站的解决方案,在此写个简易的通用扩展方法来方便大家 ...
- hibernate实现增删改查的各种方法
1>接口(主要是增删改查的接口)BaseDao.java /** * * @author fly.zhou */ public interface IBaseDao { //增加对应实体的一条记 ...
- linux的sed(增删改查)使用方法
sed的增删改查的基本操作 参考:https://www.cnblogs.com/0zcl/p/6855740.html 01:增(a) 2个sed命令,分别是:(这些操作都是在内存中进行的,所以不会 ...
- 找呀志_通过开源框架引AsyncHttpClient上传文件
一个.步骤: 1.加入权限(接入网络和可写) 2.获取上传文件的路径和推断是空的 3.如果为空.创建一个异步请求对象 4.创建上传文件路径 5.跑post请求(指定url路径.封装上传參数.新建Asy ...
随机推荐
- redirect的错误用法asp.net怎么使用自定义错误
工作了几年,写过程序也运营过网站,自定义错误也很熟悉了,最近再做项目发现有同事写了这样的代码 if (action != null) { id = Request.QueryString[" ...
- leetcode第一刷_Merge Sorted Array
水题,只是思想还是实用的. 当然能够新建出一个数组.比較着拷贝过去.可是没有必要啊亲.想想为什么用源数组会麻烦,由于确定了前面的数.为了后面的数字不被覆盖,要依次往后移,转念一想,先确定后面的数字.就 ...
- Twitter实时搜索系统EarlyBird
twitter要存档tweet采用lucene做全量指数,新发型是实时索引推文.检索实时(10在几秒钟内指数).实时索引和检索系统,称为EarlyBird. 感觉写更清晰,简洁,这个信息是真实的,只有 ...
- Metatable和Metamethod(转)
Metatable和Metamethod是用来干啥的?它们可以使得表a和b的表达式“a + b”变得有意义,其中metatable使两个不相关的表a和b之间可以进行操作,而操作的具体行为比如说&quo ...
- 在投票系统方法的原则刷票(突破ip限制刷票PHP版)
让我谈一点:事实上,没有一个突破ip限制,因为实际上,,这项限制server结束,client牛逼,不能突破..只要是能够始终重复刷票罢了 一个朋友突然来了个网站,让我帮她投票..我是一个更好的人说话 ...
- poj 1061 扩展欧几里德同余方程求解
摘要写在一瞪眼. #include<iostream> using namespace std; long long exgcd(long long a,long long b,long ...
- SystemTrayDemo
遗留问题:win7 java.awt.TrayIcon的displayMessage方法没有生效,通知消息不能正常弹出. 许多桌面环境都有一个区域用于放置在后台运行的程序的图标,这些程序偶尔会将某些 ...
- 中颖电子AD操作
#define ADC_DIS 0 #define ADC_ENB 1 //ADC通道号定义 #define ADC_Chanel0 (unsigned char)(0x00<<1) #d ...
- python2编码总结(转)
以下依次列出python2常遇到的几个问题及讲解. # -*- coding:utf-8 -*- python2默认以ASCII编码,但是在实际编码过程中,我们会用到很多中文,为了不使包含中文的程序报 ...
- C# DateTime结构的常用方法
在项目开发中,经常会碰到日期处理.比如查询中,可能会经常遇到按时间段查询,有时会默认取出一个月的数据.当我们提交数据时,会需要记录当前日期,等等.下面就看看一些常用的方法. 首先,DateTime是一 ...