SQLite使用

public class MyOpenHelper extends SQLiteOpenHelper {

	public MyOpenHelper(Context context, String name, CursorFactory factory,
			int version) {
		super(context, name, factory, version);
		// TODO Auto-generated constructor stub
	}

	//数据库创建时,此方法会调用
	@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL("create table person(_id integer primary key autoincrement, name char(10), salary char(20), phone integer(20))");

	}

	//数据库升级时,此方法会调用
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		System.out.println("数据库升级了");
	}
	
	

}



public class TestCase extends AndroidTestCase {

	//此时测试框架还没有初始化完毕,没有虚拟上下文对象
//	private MyOpenHelper oh = new MyOpenHelper(getContext(), "people.db", null, 1);
	private MyOpenHelper oh;
	private SQLiteDatabase db;
	public void test(){
		//getContext():获取一个虚拟的上下文
		MyOpenHelper oh = new MyOpenHelper(getContext(), "people.db", null, 1);
		//如果数据库不存在,先创建数据库,再获取可读可写的数据库对象,如果数据库存在,就直接打开
		SQLiteDatabase db = oh.getWritableDatabase();
		//如果存储空间满了,那么返回只读数据库对象
//		SQLiteDatabase db = oh.getReadableDatabase();
	}
	
	//测试框架初始化完毕之后,在测试方法执行之前,此方法调用
	@Override
	protected void setUp() throws Exception {
		super.setUp();
		
		oh = new MyOpenHelper(getContext(), "people.db", null, 1);
		db = oh.getWritableDatabase();
	}

	//测试方法执行完毕之后,此方法调用
	@Override
	protected void tearDown() throws Exception {
		// TODO Auto-generated method stub
		super.tearDown();
		db.close();
	}
	
	public void insert(){
		
//		db.execSQL("insert into person (name, salary, phone)values(?, ?, ?)", new Object[]{"小志的老婆[1]", "13000", 138438});
//		db.execSQL("insert into person (name, salary, phone)values(?, ?, ?)", new Object[]{"小志的儿子", 14000, "13888"});
		db.execSQL("insert into person (name, salary, phone)values(?, ?, ?)", new Object[]{"小志", 14000, "13888"});
	}
	
	public void delete(){
		db.execSQL("delete from person where name = ?", new Object[]{"小志"});
	}
	
	public void update(){
		db.execSQL("update person set phone = ? where name = ?", new Object[]{186666, "小志的儿子"});
	}
	
	public void select(){
		Cursor cursor = db.rawQuery("select name, salary from person", null);
		
		while(cursor.moveToNext()){
			//通过列索引获取列的值
			String name = cursor.getString(cursor.getColumnIndex("name"));
			String salary = cursor.getString(1);
			System.out.println(name + ";" + salary);
		}
	}
	
	public void insertApi(){
		//把要插入的数据全部封装至ContentValues对象
		ContentValues values = new ContentValues();
		values.put("name", "游天龙");
		values.put("phone", "15999");
		values.put("salary", 16000);
		db.insert("person", null, values);
	}
	
	public void deleteApi(){
		int i = db.delete("person", "name = ? and _id = ?", new String[]{"小志的儿子", "3"});
		System.out.println(i);
	}
	
	public void updateApi(){
		ContentValues values = new ContentValues();
		values.put("salary", 26000);
		int i = db.update("person", values, "name = ?", new String[]{"游天龙"});
		System.out.println(i);
	}
	
	public void selectApi(){
		Cursor cursor = db.query("person", null, null, null, null, null, null, null);
		while(cursor.moveToNext()){
			String name = cursor.getString(cursor.getColumnIndex("name"));
			String phone = cursor.getString(cursor.getColumnIndex("phone"));
			String salary = cursor.getString(cursor.getColumnIndex("salary"));
			System.out.println(name + ";" + phone + ";" + salary);
		}
	}
	
	public void transaction(){
		try{
			//开启事务
			db.beginTransaction();
			ContentValues values = new ContentValues();
			values.put("salary", 12000);
			db.update("person", values, "name = ?", new String[]{"小志"});
			
			values.clear();
			values.put("salary", 16000);
			db.update("person", values, "name = ?", new String[]{"小志的儿子"});
			
			int i = 3/0;
			//设置  事务执行成功
			db.setTransactionSuccessful();
		}
		finally{
			//关闭事务,同时提交,如果已经设置事务执行成功,那么sql语句就生效了,反之,sql语句回滚
			db.endTransaction();
		}
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值