数据库操作(2)------------SQLite存储方式

一、知识提要

1、Android应用总要用到数据存储,用户有时候需要将自己的数据存储到文件系统或数据库中,最常用的SQLite,SQLite是轻量级嵌入式数据库,它支持SQL语句。

2、SQLiteDatabase的实例代表了一个SQLite数据库,可通过它的实例方法,对数据库操作(增删查改)。

3、SQLiteOpenHelper---这是一个抽象类,通过其中getWriterDatabase()、getReaderDatabase()方法,可以生成一个数据库。

继承这个类的时候,要实现其中的3个方法:

(1)onCreate(SQLiteDatabase)-------数据库第一次生成时调用,生成数据库表。

(2)onUpgrade(SQLiteDatabase,int ,int )-------升级数据库。

(3)onOpen(SQLiteDatabase)-------打开数据库的回调函数,一般不会用到。

二、创建数据表

1、代码

private static class DatabaseHelper extends SQLiteOpenHelper {
		DatabaseHelper(Context context) {
			super(context, DATABASE_NAME, null, DATABASE_VERSION);
		}

		@Override
		public void onCreate(SQLiteDatabase db) {

			String sql = "CREATE TABLE " + TABLE_NAME 
					+ " (" + TITLE + " text not null, " 
					+ BODY + " text not null " + ");";
			Log.i("mqw:createDB=", sql);//将参数打印到日志中,打印级别是Info
			db.execSQL(sql);//执行SQL语句

		}

		@Override
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		}
	}
2、主界面




三、插入记录

1、代码

private void insertItem() {
		SQLiteDatabase db = mOpenHelper.getWritableDatabase();//得到一个可写的数据库
		String sql1 = "insert into " + TABLE_NAME + " (" + TITLE + ", " + BODY
				+ ") values('mqw', '西南大学');";
		String sql2 = "insert into " + TABLE_NAME + " (" + TITLE + ", " + BODY
				+ ") values('mqy', '宁夏大学');";
		try {
			Log.i("mqw:sql1=", sql1);
			Log.i("mqw:sql2=", sql2);
			db.execSQL(sql1);
			db.execSQL(sql2);
			setTitle("插入两条数据成功");
		} catch (SQLException e) {
			setTitle("插入两条数据失败");
		}
	}

2、插入成功,设置标题内容.....

四、查询数据库

1、代码
private void showItems() {

		SQLiteDatabase db = mOpenHelper.getReadableDatabase();
		String col[] = { TITLE, BODY };
		Cursor cur = db.query(TABLE_NAME, col, null, null, null, null, null);
		Integer num = cur.getCount();
		setTitle(Integer.toString(num) + " 条记录");
	}

2、说明

(1)query(table_name, columns, selection, selectionArgs, groupBy, having, orderBy, limit)
 
table_name----表名。相当于select语句from关键字后面的部分。如果是多表联合查询,可以用逗号将两个表名分开。 
columns----要查询出来的列名。相当于select语句select关键字后面的部分。 
selection----查询条件子句,相当于select语句where关键字后面的部分,在条件子句允许使用占位符“?” 
selectionArgs----对应于selection语句中占位符的值,值在数组中的位置与占位符在语句中的位置必须一致,否则就会有异常。 
groupBy----相当于select语句group by关键字后面的部分 
having----相当于select语句having关键字后面的部分 
orderBy----相当于select语句order by关键字后面的部分
limit----指定偏移量和获取的记录数,相当于select语句limit关键字后面的部分

(2)Cursor----Android的一个接口,数据库查询得到的结果集放在其中。
(3)cur.getCount()----得到当前Cursor中数据个数。

五、删除记录

1、代码

private void deleteItem() {
		try {
			SQLiteDatabase db = mOpenHelper.getWritableDatabase();
			db.delete(TABLE_NAME, " title = 'mqw'", null);
			setTitle("删除title为mqw的一条记录");
		} catch (SQLException e) {

		}

	}

2、说明

db.delete(TABLE_NAME,  删除条件,  参数)

删除条件相当于where子句,参数是替换“删除条件”中的 “?“。


六、删除数据表

private void dropTable() {
		SQLiteDatabase db = mOpenHelper.getWritableDatabase();
		String sql = "drop table " + TABLE_NAME;
		try {
			db.execSQL(sql);
			setTitle("数据表成功删除:" + sql);
		} catch (SQLException e) {
			setTitle("数据表删除错误");
		}
	}

七、重建数据表

private void CreateTable() {
		SQLiteDatabase db = mOpenHelper.getWritableDatabase();
		String sql = "CREATE TABLE " + TABLE_NAME + " (" + TITLE
				+ " text not null, " + BODY + " text not null " + ");";
		Log.i("mqw:createDB=", sql);

		try {
			db.execSQL("DROP TABLE IF EXISTS diary");
			db.execSQL(sql);
			setTitle("数据表成功重建");
		} catch (SQLException e) {
			setTitle("数据表重建错误");
		}
	}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值