久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么用關系型數據庫API去讀取已存在的數據庫

171次閱讀
沒有評論

共計 4422 個字符,預計需要花費 12 分鐘才能閱讀完成。

這篇文章主要介紹“怎么用關系型數據庫 API 去讀取已存在的數據庫”,在日常操作中,相信很多人在怎么用關系型數據庫 API 去讀取已存在的數據庫問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么用關系型數據庫 API 去讀取已存在的數據庫”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!

效果如下:

該 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 文件:resource

Resource resource = context.getResourceManager().getRawFileEntry( resources/rawfile/PremierLeague.sqlite).openRawFile();

然后讀取 resoruce 寫入 dbPath

FileOutputStream fos = new FileOutputStream(dbPath); byte[] buffer = new byte[4096]; int count = 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 的全局變量

private RdbStore store;

定義需要的 StoreConfig 配置文件,可以看到配置文件中指定的數據庫的名字,這里是指的剛才寫入的 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

首先得 new 一個 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()){ sqliteData sqldata = new sqliteData(); sqldata.no = resultSet.getInt(0); sqldata.clubName = resultSet.getString(1); result.add(sqldata); }

3. 然后就得到了數據庫文件想要的數據,這里將其存入了 ArrayList,然后在需要的地方去遍歷它就可以嘍

下面附上 readSqliteFile.java 文件代碼,整個 demo 從文章開頭給出的 gitee 地址去下載就可以了!

package com.harmony.rdbstoreexample; import ohos.app.AbilityContext; import ohos.data.DatabaseHelper; import ohos.data.rdb.RdbOpenCallback; import ohos.data.rdb.RdbStore; import ohos.data.rdb.StoreConfig; import ohos.data.resultset.ResultSet; import ohos.global.resource.Resource; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.nio.file.Paths; import java.util.ArrayList; public class readSqliteFile { private AbilityContext context; private File dirPath; private File dbPath; private RdbStore store; 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) { } }; public readSqliteFile(AbilityContext context) { this.context = context; dirPath = new File(context.getDataDir().toString() +  /MainAbility/databases/db  if(!dirPath.exists()){ dirPath.mkdirs(); } dbPath = new File(Paths.get(dirPath.toString(), PremierLeague.sqlite ).toString()); } private void extractDB() throws IOException{ Resource resource = context.getResourceManager().getRawFileEntry( resources/rawfile/PremierLeague.sqlite).openRawFile(); if(dbPath.exists()){ dbPath.delete(); } FileOutputStream fos = new FileOutputStream(dbPath); byte[] buffer = new byte[4096]; int count = 0; while((count = resource.read(buffer))  = 0){ fos.write(buffer,0,count); } resource.close(); fos.close(); } public void init() throws IOException{ extractDB(); DatabaseHelper helper = new DatabaseHelper(context); store = helper.getRdbStore(config,1,callback,null); } public ArrayList search(){ ResultSet resultSet = store.querySql(select * from team ,null); ArrayList result = new ArrayList(); while(resultSet.goToNextRow()){ sqliteData sqldata = new sqliteData(); sqldata.no = resultSet.getInt(0); sqldata.clubName = resultSet.getString(1); result.add(sqldata); } resultSet.close(); return result; } }

到此,關于“怎么用關系型數據庫 API 去讀取已存在的數據庫”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-27發表,共計4422字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 崇左市| 西吉县| 通化县| 罗定市| 绿春县| 上饶县| 郴州市| 昌都县| 遂溪县| 铅山县| 高尔夫| 濮阳市| 阳原县| 南岸区| 长治市| 桃园市| 嵊州市| 保德县| 营山县| 武安市| 南安市| 宾川县| 卓尼县| 凌海市| 金寨县| 兖州市| 阳朔县| 雅安市| 太康县| 百色市| 三台县| 屯昌县| 宜阳县| 潜山县| 博客| 钦州市| 绥化市| 津南区| 察雅县| 明水县| 云阳县|