赵雅智_使用SQLiteDatabase提供的增删改查方法及事务
2014-06-05 16:37
393 查看
知识点详解:/article/1344686.html
MainActivity.java,User.java,BaseDao.java,UserDao.java同上篇
/article/1344659.htmlUserDaoImple.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(); } }
相关文章推荐
- android(19)_数据存储与访问_SQLite数据库_使用SQLiteDatabase提供的增删改查方法
- 找呀志_使用SQLiteDatabase增删改提供的搜索方法和事务
- Android中SQLite数据库操作(2)——使用SQLiteDatabase提供的方法操作数据库
- 赵雅智_使用SQLiteDatabase操作SQLite数据库及事务
- android sqlite的SqliteDataBase.insert()方法,以及如何在事务管理中使用
- 赵雅智_使用SQLiteDatabase操作SQLite数据库及事务
- Android中SQLite数据库操作(2)——使用SQLiteDatabase提供的方法操作数据库
- Android开发(10)使用SQLiteDatabase操作SQLite数据库实现增删改查(源码)
- Android SQLite数据库解析并使用两种方法实现增删改查
- 关于数据库SQLiteDatabase的增删改查四个方法的参数详解
- Android开发(10)使用SQLiteDatabase操作SQLite数据库实现增删改查(源码)
- 使用SQLiteDatabase操作SQLite数据库第二种方法
- [Android开发笔记]google提供的一套增删改查方法的使用。
- 关于Android中SQLiteDataBase的增删改查的基本使用
- C#中增加SQLite事务操作支持与使用方法
- 实例讲解Android中SQLiteDatabase使用方法
- SQLiteDataBase的增删改查方法参数
- Android中使用Sqlite数据库(三) 使用 SQLiteDatabase类实现 增删改查
- android(18)_数据存储与访问_SQLite数据库_使用SQLiteDatabase操作SQLite数据库及事务
- ORA-14450: 试图访问已经在使用的事务处理临时表,根据网上文章提供的方法,问题是解决了