找呀志_使用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();
  
    }  

}


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

原文地址:https://www.cnblogs.com/zfyouxi/p/4736204.html