实例介绍
【实例简介】
本实验主要涉及的知识点是数据库的创建和数据库的增、删、查、改。Android系统推荐创建数据库的方法,是创建自己的继承自SQLiteOpenHelper类的子类,并重写其中的两个抽象方法onCreate()和onUpdate(),然后分别在这两个方法中去实现创建、升级数据库的逻辑。
除了上面提到的两个抽象的方法外,SQLiteOpenHelper中还有两个非常重要的实例方法:getReadableDatabase()和getWriteableDatabase(),SQLiteOpenHelper的子类通过这两个方法来获取SQlite数据库的实例对象,并保证以同步的方式访问。通常情况下getReadableDatabase()和getWriteableDatabase()方法都是创建或者打开一个现有的数据库,并返回一个对数据库进行读写操作的对象。但是在某些情况下,例如磁盘已经满的情况下,getReadableDatabase()方法返回的对象将只以读的方式打开数据库,而getWriteableDatabase()方法将抛出异常。
【实例截图】
【核心代码】
1. 在本实验中,在书上的实验基础上增加了一个按照姓名查询的按钮,还有一个按照性别查询的按钮。首先这两个都需要在ContactDao.java中增加分别增加数据库。如下所示:
//根据姓名查询记录
public Cursor selectByName(String name){
SQLiteDatabase db = helper.getReadableDatabase();
return db.query(TABLE_NAME,null,"name=?",new String[]{name},null,null,null);
}
//根据性别查询记录
public Cursor selectBySex(String sex){
SQLiteDatabase db = helper.getReadableDatabase();
return db.query(TABLE_NAME,null,"sex=?",new String[]{sex},null,null,null);
}
2. 然后在MainActivity.java中对这新增加的两个按钮进行监听。又因为增加了性别选项,所以要在添加数据中加入获取性别的数据
CheckedSexButton = findViewById(radioGroup.getCheckedRadioButtonId());
sex=CheckedSexButton.getText().toString();
3. 然后还要在MainActivity.java中写按姓名查询的逻辑和按性别查询的逻辑,这个可以参考上面查询整个数据的代码。
case R.id.btn_query1: // 按姓名查询
name = etName.getText().toString().trim();
Cursor cursor1 =dao.selectByName(name);
if (cursor1.getCount() == 0) {
tvList.setText("");
} else {
cursor1.moveToFirst();
tvList.setText(cursor1.getString(1) " : " cursor1.getString(2) " " cursor1.getString(3));
}
while (cursor1.moveToNext()) {
tvList.append("\n" cursor1.getString(1) " : " cursor1.getString(2) " " cursor1.getString(3));
}
cursor1.close();
break;
4. 最后要在DBHelper.java中的数据库里增加性别。
String sql = "CREATE TABLE contact(_id INTEGER PRIMARY KEY AUTOINCREMENT ,name VARCHAR(10),phonenumber VARCHAR(12),sex VARCHAR(2))";
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论