找呀志_使用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 ...
随机推荐
- Linux学习笔记——举例说,makefile 多个文件
0.前言 从学习C语言開始就慢慢開始接触makefile,查阅了非常多的makefile的资料但总感觉没有真正掌握makefile,假设自己动手写一个makefile总认为非常吃力. 所以特意 ...
- T-SQL中default值的使用
今天介绍一下通过T-SQL语句来创建表时使用default的关键字来自动使用默认值,这个关键字和其它的如:identity,primary key ,not null ,unique等不是相同,这里简 ...
- 构造NFS
一.设备nfs-utils 伺服器: [root@server05 ftp]# yum install nfs-utils 这时会自己主动安装rpcbind需将此服务重新启动nfs服务才干启动 cli ...
- SQL Server 版本号汇总
通过SSMS连接Sql servr,查看实例的版本就能知道当前SQL Server的版本号了. RTM (no SP) SP1 SP2 SP3 SP4 SQL Server 2014 c ...
- Ubuntu在构建Robotframework+Selenium周围环境
最近经历了从Windows进入系统Ubuntukylin下列.因此,测试工具也需要被重新安装,今天和共享安装过程. 我用的是环境:Ubuntu Kylin 14.04 64Bit系统. 启动权,首先, ...
- MVC 5 Ajax + bootstrap+ handle bar 例: 实现service 状态
Js Script <script src="../../Scripts/handlebars-v1.3.0.js"></script> <scrip ...
- MapReduce源代码分析MapTask分析
前言 MapReduce该分析是基于源代码Hadoop1.2.1代码分析进行的基础上. 该章节会分析在MapTask端的详细处理流程以及MapOutputCollector是怎样处理map之后的col ...
- Lua 环境结构 --Linux
curl -R -O http://www.lua.org/ftp/lua-5.2.3.tar.gz tar zxf lua-5.2.3.tar.gz cd lua-5.2.3 make linux ...
- Spring-MVC4 + JPA2 + MySql-5.5 + SLF4J + JBoss WildFly-8.1开发环境的搭建
面试被问Spring4,它的目的是把过去Spring3所有升级项目Spring4.现在将记录在此环境搭建过程. 第一次使用Maven Archetype创建一个项目框架,运行以下命令: mvn arc ...
- android 更新实现自己主动
其主要原理是: 在应用程序启动.取server在版本 , 以下这个是获取当前应用的版本号信息 private void getCurVersion() { try { PackageInfo pInf ...