android学习笔记(五) 数据存储技术(中)

在上一篇博客中,我们简单介绍了SharedPreferences存储和文件存储,android除了这两种存储,还可以进行数据库存储。Android系统集成了一个轻量级的关系数据库----SQLite,它占用资源少,运行效率高、安全性好、可移植性强,故而非常适合在资源有限的设备上进行数据存储。下面就让我们一起来学习Android的数据库存储。

1、创建数据库

创建数据库主要用到的是SQLiteOpenHelper类,该类是一个抽象类,需要自定义一个类去继承它,并重写onCreate()、onUpgrade()方法和自定义类的构造方法。因为SQLiteOpenHelper类没有无参构造方法。代码如下:

public class DBHelper extends SQLiteOpenHelper {

	public DBHelper(Context context,int version) {
		super(context, "text.db", null, version);
	}

	/**
	 * 什么时候才会创建数据库文件?
	 * 	1). 数据库文件不存在
	 *  2). 连接数据库
	 * 
	 * 什么时候调用?
	 * 	当数据库文件创建时调用(1次)
	 * 在此方法中做什么?
	 * 	建表
	 * 	插入一些初始化数据
	 */
	@Override
	public void onCreate(SQLiteDatabase db) {
		Log.e("TAG", "DBHelper onCreate()");
		//建表
		String sql = "create table person(_id integer primary key autoincrement, name varchar,age int)";
		db.execSQL(sql);
		//插入一些初始化数据
		db.execSQL("insert into person (name, age) values ('Tom1', 11)");
		db.execSQL("insert into person (name, age) values ('Tom2', 12)");
		db.execSQL("insert into person (name, age) values ('Tom3', 13)");
	}

	//当传入的版本号大于数据库的版本号时调用
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		Log.e("TAG", "DBHelper onUpgrade()");
	}

}

其中onCreate()方法在数据库创建的时候执行,onUpgrade()方法在数据库更新的时候执行。

在创建好这个类后,需要在MainActivity中实现这个类,并获取数据库连接,代码如下:

DBHelper dbHelper = new DBHelper(this, 1);
//获取连接
SQLiteDatabase database = dbHelper.getReadableDatabase()

2、实现数据库的增删改查

在创建好数据库后,就可以对数据库进行操作,主要包括增加数据、删除数据、修改数据和产看数据,下面做一一介绍。

2.1 增加数据

数据库中增加一条数据的执行语句为:insert into person(name, age) values('Tom', 12),而在Android中,对一个数据库增加数据则通过键值对来完成的,具体代码如下:

public void testInsert(View v) {
		//1. 得到连接
		DBHelper dbHelper = new DBHelper(this, 2);
		SQLiteDatabase database = dbHelper.getReadableDatabase();
		//2. 执行insert  insert into person(name, age) values('Tom', 12)
		ContentValues values = new ContentValues();
		values.put("name", "Tom");
		values.put("age", 12);
		long id = database.insert("person", null, values);
		//3. 关闭
		database.close();
		//4. 提示
		Toast.makeText(this, "id="+id, 1).show();
}

2.2 删除数据

删除数据时,需要知道删除的位置,通常是根据id号来进行删除的,具体代码如下:

public void testDelete(View v) {
		// 1. 得到连接
		DBHelper dbHelper = new DBHelper(this, 2);
		SQLiteDatabase database = dbHelper.getReadableDatabase();
		// 2. 执行delete delete from person where _id=2
		int deleteCount = database.delete("person", "_id=2", null);
		// 3. 关闭
		database.close();
		// 4. 提示
		Toast.makeText(this, "deleteCount=" + deleteCount, 1).show();
}

2.3 修改数据

public void testUpdate(View v) {
		DBHelper dbHelper = new DBHelper(this, 2);
		SQLiteDatabase database = dbHelper.getReadableDatabase();
		//执行update  update person set name=Jack, age=13 where _id=4
		ContentValues values = new ContentValues();
		values.put("name", "jack");
		values.put("age", 13);
		int updateCount = database.update("person", values , "_id=?", new String[]{"4"});
		database.close();
		Toast.makeText(this, "updateCount="+updateCount, 1).show();
}

2.4 查询数据

public void testQuery(View v) {
		// 1. 得到连接
		DBHelper dbHelper = new DBHelper(this, 2);
		SQLiteDatabase database = dbHelper.getReadableDatabase();
		// 2. 执行query select * from person
		Cursor cursor = database.query("person", null, null, null, null, null, null);
		//cursor = database.query("person", null, "_id=?", new String[]{"3"}, null, null, null);
		//得到匹配的总记录数
		int count = cursor.getCount();
		
		//取出cursor中所有的数据
		while(cursor.moveToNext()) {
			//_id
			int id = cursor.getInt(0);
			//name
			String name = cursor.getString(1);
			//age
			int age = cursor.getInt(cursor.getColumnIndex("age"));
			Log.e("TAG", id+"-"+name+"-"+age);
		}
		// 3. 关闭
		cursor.close();
		database.close();
		// 4. 提示
		Toast.makeText(this, "count=" + count, 1).show();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值