Android开发之读取数据库(SQLiteOpenHelper)
SQLite数据库
相信大家都用过Excel吧,我们在管理少量比较复杂的数据时就会使用它。比方统计一个班的学生信息,我们一般会在第一行输入学生姓名、班级、学号等字段来构成一个学生的完整信息。例如:
学生信息- 同样,我们在使用手机的时候也会产生大量数据要进行管理,比方在信息会话中,不同的联络人包含不同的短信内容以及对应的联络人。那我们如何管理这些数据呢?毫无疑问,通过数据库来管理。
- SQLite数据库就是这样一个内置在Android中的轻量级的关系型数据库,它支持标准的SQL语法,并且只占用极少的内存。
- 接下来我们将使用自己定义的MyDatabaseHelper类继承自SQLiteOpenHelper来实现我们的App。
读取数据库文件
- 我们将完成一个拥有以下功能的App:
- 从一个已经写好的数据库(里面包含少量学生信息)读取学生的基本信息。
- 点击获取按钮,将读取出来的信息在ListView控件中展现。
编写布局代码(代码最后给出),实现效果如下:
主页面- 创立一个数据库辅助类,用于做数据库操作。代码如下:
public class MyDatabaseHelper extends SQLiteOpenHelper { public MyDatabaseHelper (Context context, String name, int version) { super(context, name, version); } @Override public void onCreate(SQLiteDatabase db) { //创立sql语句,新建表 String sqlCommand1 = "create table student(_id integer primary key, name varchar(255), age integer)"; //执行sql语句 db.execSQL(sqlCommand1); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub }}补充
- MyDatabaseHelper是一个继承自SQLiteOpenHelper的Java类,它需要重写父类的onCreate()和onUpgrade()方法。该类的构造函数,也就是MyDatabaseHelper()用来初始化数据库连接。当数据表第一次被创立时,onCreate()方法将被触发,在该方法中实现数据表的创立。当数据库需要更新时,onUpgrade()方法将被触发,该方法实现数据库升级。
- 在主活动onCreate()方法中,初始化ListView,创立数组适配器,并在按钮响应函数中编写数据库读取的代码。代码如下:
public class MainActivity extends AppCompatActivity { ArrayAdapter<String> adapter; private MyDatabaseHelper dbHelper; Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button)findViewById(R.id.button1); //创立MyDatabaseHelper对象 dbHelper = new MyDatabaseHelper(this, "test.db", 1); adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1); ListView listView = (ListView)findViewById(R.id.list1); listView.setAdapter(adapter); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //通过SQLiteDatabase返回的对象对数据库进行操作 //getWritableDatabase()方法创立或者打开一个可读数据库 SQLiteDatabase db = dbHelper.getWritableDatabase(); //查询student表中所有数据 //查询到的数据都将从Cursor对象取出 Cursor cursor = db.query(false, "student", null, null, null ,null, null, null, null); if (cursor.moveToFirst()){//遍历对象 do { //向适配器中增加数据 adapter.add(cursor.getString(cursor.getColumnIndex("name"))); adapter.add(cursor.getString(cursor.getColumnIndex("no"))); }while (cursor.moveToNext()); } cursor.close(); } }); }}补充
dbHelper = new MyDatabaseHelper(this, "test.db", 1)创立MyDatabaseHelper对象时需在其中传入Context(this)、数据库文件名字(test.db)、数据库版本(1)。这里我们已经传入一个写好的数据库文件,当系统发现已经有数据库了,就不会调用MyDatabaseHelper中的onCreate()函数,所以这两句代码就不会执行。String sqlCommand1 = "create table student(_id integer primary key, name varchar(255), age integer)";db.execSQL(sqlCommand1);
写在这里是为了熟习相关数据库操作方法。- 我们如何将数据库文件传入虚拟机中呢?需在Android Studio(3.2)打开Device File Explorer,上传test.db文件/data/data/com.example.datastoredemo/databases中。
SQLiteDatabase db = dbHelper.getWritableDatabase()getWritableDatabase()方法会创立或者打开一个可读数据库。Cursor cursor = db.query(false, "student", null, null, null ,null, null, null, null)Cursor类是数据每行的集合,db.query()方法中所含参数非常多(大家可以自行搜索一下),这里我们查询数据库中”student”表,并把查询到的数据返回给cursor便于后续操作。cursor.moveToFirst()将记录指针移动到第一行,如有数据则执行下面的方法。cursor.moveToNext()将记录指针移动到下一行,判断还有无数据。
实际效果
增加数据前:
增加数据前点击增加按钮:
点击按钮
GitHub地址
- 主活动代码
0xmxhnc/AndroidTest/blob/master/DataStoreDemo/app/src/main/java/com/example/datastoredemo/MainActivity.java - 自己设置数据库辅助类
0xmxhnc/AndroidTest/blob/master/DataStoreDemo/app/src/main/java/com/example/datastoredemo/MyDatabaseHelper.java - 布局页面代码
0xmxhnc/AndroidTest/blob/master/DataStoreDemo/app/src/main/res/layout/activity_main.xml
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Android开发之读取数据库(SQLiteOpenHelper)
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Android开发之读取数据库(SQLiteOpenHelper)