博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
找呀志_使用SQLiteDatabase增删改提供的搜索方法和事务
阅读量:4578 次
发布时间:2019-06-08

本文共 5916 字,大约阅读时间需要 19 分钟。

知识具体解释:

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
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

你可能感兴趣的文章
js数组求交集
查看>>
poj 3169 layout
查看>>
springBoot bean注入
查看>>
为什么使用dojo?dojo与jquery有什么不同?dojo适合什么开发场景?
查看>>
jQuery实现等比例缩放大图片
查看>>
洛谷:P3384 [HNOI2004]宠物收养场
查看>>
输入三个字符串,按由小到大的顺序输出
查看>>
SparkSQL——用之惜之
查看>>
WEB常用端口号
查看>>
回调函数理解
查看>>
正则表达式取小数点后面几位
查看>>
Vijos 1460 拉力赛
查看>>
c#编程基础
查看>>
Python爬虫
查看>>
关于Spring中@Autowired和@Qualifier注释的使用
查看>>
jQuery API 中文文档
查看>>
java正则表达式
查看>>
spring boot 入门一
查看>>
[一本通 5.5 例 4」旅行问题
查看>>
servlet与filter的加载顺序详解
查看>>