议事日程系统数据库实现

日程系统数据库实现

关注微信号:javalearns   随时随地学Java

或扫一扫

 

议事日程系统数据库实现

 

随时随地学Java

为了方便我们操作数据库,一般我们都会继承SQLiteOpenHelper帮助我们操作数据库,下面我们就通过做一个简单日程记录项目学习一下如何操作数据库,想我们以前一样,我们可以把对数据库的操作封装在一个类中,代码如下:

public class BaseDao extends SQLiteOpenHelper {

	private Context context;
	private SQLiteDatabase database;

	// 数据库信息 常量
	public static final String DATABASE = "ric_db";
	public static final String TBRICHENG = "tb_ric";
	public static final String RID = "rid";
	public static final String RIDATE = "ridate";
	public static final String RIMESSAGE = "rimessage";

	public BaseDao(Context context, int version) {
		super(context, DATABASE, null, version);
	}

	// 打开数据库,如果没有这个数据,自动调用这个方法,建立数据表
	@Override
	public void onCreate(SQLiteDatabase db) {
		Log.e("建表", "onCreate");
		String sql = "create table " + TBRICHENG + " ( " + RID
				+ " integer primary key autoincrement,  " + RIDATE
				+ " text not null," + RIMESSAGE + " text not null )";
		db.execSQL(sql);

	}

	// 当版本升级时候自动调用,真实使用一定要注意保存以前的数据
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

	}

	public void open() {
		database = this.getWritableDatabase();
	}

	public void closeAll() {
		database.close();
	}

	// 对日程表的操作
	public void addcheng(String message, String date) {
		String sql = "insert into " + TBRICHENG + "(" + RIMESSAGE + ","
				+ RIDATE + ") values('" + message + "','" + date + "')";
		database.execSQL(sql);
	}

	// 对日程表的操作
	public void delcheng(String rid) {
		String sql = "delete from " + TBRICHENG + " where " + RID + "=" + rid;
		database.execSQL(sql);
	}

	// 对日程表的操作
	public void updatecheng(String rid, String message, String date) {

		ContentValues values = new ContentValues();
		values.put(RIMESSAGE, message);
		values.put(RIDATE, date);

		database.update(TBRICHENG, values, RID + "=?", new String[] { rid });
	}

	// 对日程表的查询
	public void  queryall(List<Map<String, Object>> datas) {
		
		Cursor cursor = database.query(TBRICHENG, new String[] { RID,
				RIMESSAGE, RIDATE }, null, null, null, null, null);

		cursor.moveToFirst();
		while (!cursor.isAfterLast()) {
			Map<String, Object> map = new HashMap<String, Object>();
			map.put(RID, cursor.getInt(0));
			map.put(RIMESSAGE, cursor.getString(1));
			map.put(RIDATE, cursor.getString(2));

			datas.add(map);
			//移动到下一个
			cursor.moveToNext();

		}


	}
}

下面就简单说明一下上面这段代码,

1、建表

// 打开数据库,如果没有这个数据,自动调用这个方法,建立数据表
	@Override
	public void onCreate(SQLiteDatabase db) {
		Log.e("建表", "onCreate");
		String sql = "create table " + TBRICHENG + " ( " + RID
				+ " integer primary key autoincrement,  " + RIDATE
				+ " text not null," + RIMESSAGE + " text not null )";
		db.execSQL(sql);

	}

在第一次打开数据库的时候会自动调用这个方法,所以我们在上面这个方法就建立数据库表。现在只需要一个表,建表语法和我们以前学习mysql语法差不多,稍稍有点区别而已。

// 当版本升级时候自动调用,真实使用一定要注意保存以前的数据
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

	}

这个方法就是版本发生变化后才会调用。

2、然后我们封装了两个打开数据库和关闭数据库的方法。

public void open() {
	database = this.getWritableDatabase();
}

public void closeAll() {
	database.close();
}

打开数据库这里直接使用getWritableDatabase写的方式打开,这是为了方便而已,如果只是查询数据可以使用getReadableDatabase,不过我们这个示例既要读也要写,所以使用getWritableDatabase的方式打开。

3、增删改查方法。

下面就是对数据库表的增删改查操作了。基本上都是使用SQLiteDatabase对象执行sql语句。

// 对日程表的操作
	public void addcheng(String message, String date) {
		String sql = "insert into " + TBRICHENG + "(" + RIMESSAGE + ","
				+ RIDATE + ") values('" + message + "','" + date + "')";
		database.execSQL(sql);
	}

	// 对日程表的操作
	public void delcheng(String rid) {
		String sql = "delete from " + TBRICHENG + " where " + RID + "=" + rid;
		database.execSQL(sql);
	}

	// 对日程表的操作
	public void updatecheng(String rid, String message, String date) {

		ContentValues values = new ContentValues();
		values.put(RIMESSAGE, message);
		values.put(RIDATE, date);

		database.update(TBRICHENG, values, RID + "=?", new String[] { rid });
	}

	// 对日程表的查询
	public void  queryall(List<Map<String, Object>> datas) {
		
		Cursor cursor = database.query(TBRICHENG, new String[] { RID,
				RIMESSAGE, RIDATE }, null, null, null, null, null);

		cursor.moveToFirst();
		while (!cursor.isAfterLast()) {
			Map<String, Object> map = new HashMap<String, Object>();
			map.put(RID, cursor.getInt(0));
			map.put(RIMESSAGE, cursor.getString(1));
			map.put(RIDATE, cursor.getString(2));

			datas.add(map);
			//移动到下一个
			cursor.moveToNext();

		}


	}

注意我们不需要在每一个操作都打开数据,和关闭数据库,打开数据只需要在activity中打开一次就可以了。如果你对sql比较熟悉那么可以直接写sql语句就可以了。如果你对sql不熟悉也可以使用SQLiteDatabase封装的增删改的方法。

关注微信号:javalearns   随时随地学Java

或扫一扫

 

议事日程系统数据库实现

 

随时随地学Java