找呀志_使用SQLiteDatabase增删改提供的搜索方法和事务

时间:2021-03-10 12:52:41

知识具体解释: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(); } }

版权声明:本文博客原创文章,博客,未经同意,不得转载。