如何使用关系数据库API读取现有数据库

分类:编程技术 时间:2024-02-20 15:41 浏览:0 评论:0
0
本文主要介绍“如何使用关系数据库API读取现有数据库”。在日常操作中,相信很多人都对如何使用关系型数据库API读取现有数据库存在疑问。小编查阅了各种资料,整理出了简单易用的操作方法。希望能帮助大家解答关于“如何使用关系型数据库API读取现有数据库”的疑惑!接下来就请跟随小编一起来学习吧!

效果如下:


本demo操作关系型数据库的大致逻辑。

- 1.将复制的sqlite文件读取到应用程序中

- 2.然后使用HarmonyOS提供的API处理读取的数据并显示

>

1.将复制的sqlite文件夹读入应用程序

1.1首先将一个已有的sqlite文件放入指定位置

指定位置为/src/main/resources/rawfile,是的,它必须在这里。数据库文件内容如下:

1.2然后会读取上一步放置的sqlite文件,读入到可以识别的空间通过这个应用程序(目前是这样的理解,反正只有这样做才能读取)

具体的读取过程,我创建了一个文件:readSqliteFile.java(参见文末)

这段代码还涉及到封装数据库和打开数据的操作。本节只讲一下。阅读上一步中复制文件的过程。

首先,通过以下两行指定读取数据的存储位置:dbPath。

dirPath = new File(context.getDataDir().toString() + "/MainAbility/databases/db"); dbPath = new File(Paths.get(dirPath.toString(),"PremierLeague.sqlite").toString());

然后通过以下命令打开我们刚刚放入的sqlite文件ing line:resource

Resourceresource = context.getResourceManager().getRawFileEntry("resources/rawfile/PremierLeague.sqlite").openRawFile();

然后读取资源并写入dbPath

FileOutputStream fos = new FileOutputStream(dbPath);字节[]缓冲区=新字节[4096];整数计数=0; while((count = Resource.read(buffer)) >= 0){ fos.write(buffer,0,count); } 

2.然后使用harmonyOS提供的API处理读取到的数据并显示

这块代码也是上一节所示的readSqliteFile。 .java 文件。这里我们在数据管理模块中使用关系型数据库官方提供的API,链接:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/database-relational-overview-0000000000030046,这个API是RdbSotre 家族。

2.1 配置RdbStore

定义RdbStore全局变量

私有RdbStore存储;

需要定义StoreConfig 配置ration文件中,可以看到配置文件中指定的数据库名称,这里指的是刚才写的dbPath。

private StoreConfig config = StoreConfig.newDefaultConfig("PremierLeague.sqlite");

定义配置所需的回调函数。这里还不需要,所以先用空的

private static Final RdbOpenCallback callback = new RdbOpenCallback() { @Override public void onCreate(RdbStore rdbStore) { } @Override public void onUpgrade (RdbStore rdbStore, int i, int i1) { } };

2.2 打开RdbStore

首先新建一个DatabaseHelper

DatabaseHelper helper = new DatabaseHelper(context);

然后从new DatabaseHelper中调用getRdbStore获取RdbStore对象

store = helper.getRdbStore(config,1,callback,null) ;

2.3从上一步打开的RdbStore中查询

首先使用querySql传入sql语句进行查询

ResultSet resultSet = store.querySql("select * from team",null);

然后使用ResultSet类的goToNextRow()读取

while(resultSet.goToNextRow()) { sqliteDatasqldata = 新的 sqliteData(); sqldata.no = resultSet.getInt(0); sqldata.clubName = resultSet.getString(1);结果.add(sqldata); }

3.然后你就可以在数据库文件中得到你想要的数据了。这里,将其存储在一个ArrayList中,然后在需要的地方进行遍历。

下面附上readSqliteFile.java文件代码。整个从文章开头给出的gitee地址下载demo即可!

package com.harmony.rdbstoreexample;导入 ohos.app.AbilityContext;导入 ohos.data.DatabaseHelper;导入 ohos.data.rdb。 RdbOpenCallback;导入 ohos.data.rdb.RdbStore;导入 ohos.data.rdb.StoreConfig;导入 ohos.data.resultset.ResultSet;导入 ohos.global.resource.Resource;导入java.io.File;导入java.io。文件输出流;导入java.io.IOException;导入java.nio.文件。路径;导入java.util.ArrayList;公共类 readSqliteFile { 私有 SkillContext 上下文;私有文件目录路径;私有文件 dbPath;私人 RdbStore 商店;私人 StoreConfig config = StoreConfig.newDefaultConfig("PremierLeague.sqlite");私有静态最终 RdbOpenCall back 回调 = new RdbOpenCallback() { @Override public void onCreate(RdbStore rdbStore) { } @Override public void onUpgrade(RdbStore rdbStore, int i, int i1) { } };公共 readSqliteFile(AbilityContext context) { this.context = context; dirPath = new File(context.get DataDir() .toString() + "/MainAbility/databases/db"); if(!dirPath.exists()){ dirPath.mkdirs(); } dbPath = new File(Paths.get(dirPath.toString(),"PremierLeague.sqlite").toString()); } private void extractDB() throws IOException{ 资源资源 = context.getResourceManager().getRawFileEntry("resources/rawfile/PremierLeague.sqlite").openRawFile(); if(dbPath.exists()){ dbPath.delete(); } FileOutputStream fos = new FileOutputStream(dbPath) ;乙yte[]缓冲区=新字节[4096];整数计数=0; while((count = Resource.read(buffer)) >= 0){ fos.write(buffer,0,count); } 资源.close(); fos.close(); } public void init() 抛出 IOException{ extractDB(); DatabaseHelper helper = new DatabaseHelper(context); store = helper.getRdbStore(config,1,callback,null); } public ArrayList search(){ ResultSet resultSet = store.querySql("从团队中选择 *",null); ArrayList 结果 = new ArrayList(); while(resultSet.goToNextRow()){ sqliteData sqldata = new sqliteData(); sqldata.no = resultSet.getInt(0); sqldata.clubName = resultSet.getString(1);结果.add(sqldata); } 结果集.close();返回结果; } }

《如何使用关系型数据库API读取现有数据库》的学习就到此结束,希望能解决大家的疑惑。理论与实践相结合,能够更好的帮助大家学习,去尝试吧!如果您想继续学习更多相关知识,请继续关注网络地点。小编会继续努力,给大家带来更多实用的文章!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何使用关系数据库API读取现有数据库

用户评论