Android 对sqlite数据库增删查改的dao封装,以及事务的简单操作(简单银行转帐)

package cn.itcast.db.dao;

import java.util.ArrayList;
import java.util.List;

import cn.itcast.db.MyDBOpenHelper;
import cn.itcast.db.domain.Person;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class PersonDBDao {
	private Context context;
	MyDBOpenHelper dbOpenHelper;

	public PersonDBDao(Context context) {
		this.context = context;
		dbOpenHelper = new MyDBOpenHelper(context);
	}

	/**
	 * 添加一条记录
	 */
	public void add(String name, int age) {
		SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
		if (db.isOpen()) {
			// db.execSQL("insert into person (name,age) values (?,?)",new
			// Object[]{name,age});
			// db.execSQL("insert into person ",null) // 不合法的sql语句
			ContentValues values = new ContentValues();
			values.put("name", name);
			values.put("age", age);
			// 如果 contentvalues为空
			db.insert("person", null, values); // 组拼sql语句完成的添加的操作
			
			// insert into person name values (NULL) ;
			db.close();
		}

	}

	/**
	 * 删除一条记录
	 */
	public void delete(String name) {
		SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
		if (db.isOpen()) {
			db.delete("person", "name=?", new String[] { name });
			db.close();
		}
	}

	/**
	 * 数据库的更改操作
	 */
	public void update(String name, String newname, int newage) {
		SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
		if (db.isOpen()) {
			ContentValues values = new ContentValues();
			values.put("name", newname);
			values.put("age", newage);
			db.update("person", values, "name=?", new String[] { name });
			db.close();
		}
	}

	/**
	 * 数据库的查询操作
	 */
	public boolean find(String name) {
		boolean result = false;
		SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
		if (db.isOpen()) {
			// select * from person
			Cursor cursor = db.query("person", null, "name=?",
					new String[] { name }, null, null, null);
			if (cursor.moveToFirst()) {
				result = true;
			}
			cursor.close();
			db.close();
		}
		return result;

	}

	/**
	 * 查询所有信息
	 */
	public List<Person> findAll() {
		List<Person> persons = null;
		SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
		if (db.isOpen()) {
			Cursor cursor = db.query("person", null, null, null, null, null,
					null);
			persons = new ArrayList<Person>();
			while (cursor.moveToNext()) {
				Person person = new Person();
				String name = cursor.getString(cursor.getColumnIndex("name"));
				person.setName(name);
				int age = cursor.getInt(cursor.getColumnIndex("age"));
				person.setAge(age);
				persons.add(person);
			}
			cursor.close();
			db.close();
		}
		return persons;
	}
	/**
	 * 查询所有信息
	 */
	public Cursor findAllbyCursor() {
		SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
		if (db.isOpen()) {
			/*Cursor cursor = db.query("person", null, null, null, null, null,
					null);*/
			Cursor cursor = db.rawQuery("select personid as _id,age,name from person", null);
			
			return cursor;
			// 注意了  一定不要把数据库 关闭了 
			}
		return null;
		
	}
	/**
	 * 银行转账的方法
	 */
	public void transaction() {
		SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
		if (db.isOpen()) {

			try {
				// 开启数据库的事务
				db.beginTransaction();
				// 给张三设置1000块钱的账户
				db.execSQL("update person set account=? where name=?",
						new Object[] { 1000, "zhangsan98" });
				// 把张三的账户扣除200块钱
				db.execSQL("update person set account=account-? where name=?",
						new Object[] { 200, "zhangsan98" });
				// 出现了异常
				// 把张三的钱给李四
				//初始化李四账户 为 0
				db.execSQL("update person set account=? where name=?",
						new Object[] { 0, "lisi" });
				db.execSQL("update person set account=account+? where name=?",
						new Object[] { 200, "lisi" });
				db.setTransactionSuccessful();
			}
			// 显示的设置事务是否成功
			catch (Exception e) {
				// TODO: handle exception
			} finally {
				db.endTransaction();
				db.close();
			}
		}
	}
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 安卓的SQLite数据库增删查改操作通常需要使用SQL语句来实现。下面是一个简单的实现过程: 1. 创建数据库:使用SQLiteOpenHelper类创建数据库,实现onCreate()方法创建表。 2. 增加数据:使用SQLiteDatabase类的insert()方法插入数据。 3. 删除数据:使用SQLiteDatabase类的delete()方法删除数据。 4. 修改数据:使用SQLiteDatabase类的update()方法修改数据。 5. 查询数据:使用SQLiteDatabase类的query()方法查询数据,并使用Cursor对象读取查询结果。 这是一个简单的实现过程,具体的实现过程可能因项目不同而有所差别,但大致思路是一致的。 ### 回答2: 安卓本地SQLite数据库增删查改操作是用于管理和操作本地SQLite数据库的一系列方法。以下是实现该过程的步骤: 1. 创建数据库:首先需要在安卓应用中创建一个SQLite数据库。可以通过继承SQLiteOpenHelper类来创建和管理数据库。在SQLiteOpenHelper的子类中可以定义数据库的名称、版本号和表结构。 2. 增加数据(Insert):使用SQLiteDatabase的insert方法可以向数据库中添加新的数据。该方法接受要插入的表名称、要插入的数据和要插入的列名称作为参数。可以通过ContentValues对象来存储要插入的数据,然后将ContentValues对象作为参数传递给insert方法。 3. 查询数据(Query):使用SQLiteDatabase的query方法可以从数据库中查询数据。该方法接受表名称、要查询的列名称、查询条件、查询参数等作为参数。可以通过Cursor对象来接收查询结果,并通过Cursor的moveToFirst等方法来遍历查询结果。 4. 更新数据(Update):使用SQLiteDatabase的update方法可以更新数据库中的数据。该方法接受表名称、更新的数据、更新条件、更新参数等作为参数。使用ContentValues对象来存储要更新的数据,并将ContentValues对象作为参数传递给update方法。 5. 删除数据(Delete):使用SQLiteDatabase的delete方法可以从数据库中删除数据。该方法接受表名称、删除条件、删除参数等作为参数。可以根据条件删除数据,也可以删除整个表中的所有数据。 以上是安卓本地SQLite数据库增删查改操作的实现过程。通过使用SQLiteOpenHelper类和SQLiteDatabase类提供的方法,可以方便地对本地SQLite数据库进行各种操作。 ### 回答3: 安卓的本地SQLite数据库操作分为增加(Insert)、删除(Delete)、查询(Select)和更新(Update)四个基本操作。 首先是增加操作,首先需要创建一个SQLiteOpenHelper类,继承自SQLiteOpenHelper,重写onCreate和onUpgrade方法,以便创建数据库和表。然后,在需要进行插入操作的地方,实例化该SQLiteOpenHelper类,并通过getWritableDataBase()方法获取一个可写的数据库对象,接着调用insert方法进行数据插入。 接下来是删除操作,通过getWritableDataBase()方法获取可写的数据库对象,然后调用delete方法进行数据删除。delete方法需要传入表名和删除条件。 然后是查询操作,同样需要获取可读的数据库对象,调用query方法进行查询。query方法需要传入表名、字段名、查询条件和排序等参数,返回一个Cursor对象。通过Cursor对象可以遍历查询结果,取得所需的数据。 最后是更新操作,同样需要获取可写的数据库对象,然后调用update方法进行数据更新。update方法需要传入表名、新数据和更新条件。 需要注意的是,数据库操作通常需要在一个事务中进行,以确保数据的完整性和一致性。在事务中的数据库操作失败时,可以进行回滚操作或者采取其他处理方式。 总结,安卓本地SQLite数据库增删查改操作实现过程包括创建SQLiteOpenHelper类、获取可读/写的数据库对象,并分别调用对应的insert、delete、query和update方法来进行增加、删除、查询和更新操作

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值