议事日程系统数据库实现
日程系统数据库实现
关注微信号: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