Android Studio在DAO模式下的SQLite数据库的CRUD编程
要求:
AS实现往SQLite数据库中表的增删改查。
实现界面展示:
布局文件:
主布局,需要2个TextView:分别表示姓名和年龄;2个EditText:id分别为et_name,et_age;3个Button按钮:id分别为bt_add,bt_modify,bt_del和1个ListView:id为listView。
ListView使用的布局:id为别为的tv_id、tvname和tvage的3个TextView控件。
事件监听控制:
(1)新建名为DbHelper的SQLite数据库打开助手类,主要重写两个抽象方法onCreate()方法建表friends。之后运行时,若数据库没有版本提升,则以可读写方式直接打开数据库;SQLite数据库属于内部存储,在应用卸载时将被删除,而再次安装时不会被删除;若有版本提升,则先执行onUpgrade()方法后,再以可读写方式打开数据库。
部分代码:
@Override
public void onCreate(SQLiteDatabase db) {
//当表不存在时,创建表;第一字段为自增长类型
db.execSQL("CREATE TABLE IF NOT EXISTS " +
TB_NAME + "( _id integer primary key autoincrement," +
"name varchar," + "age integer"+ ")");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 执行SQL命令
db.execSQL("DROP TABLE IF EXISTS " + TB_NAME);
onCreate(db);
}
(2)新建名为MyDAO的数据库访问类,在MyDAO中调用DbHelper类,同时利用MyDAO提供的CRUD针对数据库test.db的表friends完成增删改查操作。
部分代码:
public Cursor allQuery(){ //查询所有记录
myDb = dbHelper.getReadableDatabase();
return myDb.rawQuery("select * from friends",null);
}
public int getRecordsNumber(){ //返回数据表记录数
myDb = dbHelper.getReadableDatabase();
Cursor cursor= myDb.rawQuery("select * from friends",null);
return cursor.getCount();
}
public void insertInfo(String name,int age){ //插入记录
myDb = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", name);
values.put("age", age);
long rowid=myDb.insert(DbHelper.TB_NAME, null, values);
if(rowid==-1)
Log.i("myDbDemo", "数据插入失败!");
else
Log.i("myDbDemo", "数据插入成功!"+rowid);
}
public void deleteInfo(String selId){ //删除记录
String where = "_id=" + selId;
int i = myDb.delete(DbHelper.TB_NAME, where, null);
if (i > 0)
Log.i("myDbDemo", "数据删除成功!");
else
Log.i("myDbDemo", "数据未删除!");
}
public void updateInfo(String name,int age,String selId){ //修改记录
//方法中的第三参数用于修改选定的记录
ContentValues values = new ContentValues();
values.put("name", name);
values.put("age", age);
String where="_id="+selId;
int i=myDb.update(DbHelper.TB_NAME, values, where, null);
//上面几行代码的功能可以用下面的一行代码实现
//myDb.execSQL("update friends set name = ? ,age = ? where _id = ?",new Object[]{name,age,selId});
if(i>0)
Log.i("myDbDemo","数据更新成功!");
else
Log.i("myDbDemo","数据未更新!");
}
在MainActivity中监听各个点击事件,完成获取数据,并使用MyDAO类中方法。代码见码云仓库。
最后附上源码(码云仓库):
链接: https://gitee.com/yangjy11/SQLite-AS/tree/master/MySQLite/app/src/main.