成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用鴻蒙HarmonyOS官方關(guān)系型數(shù)據(jù)庫(kù)API去讀取已存在的數(shù)據(jù)庫(kù)

數(shù)據(jù)庫(kù) OpenHarmony
要寫的demo的大概邏輯,我會(huì)直接將一個(gè)事先已經(jīng)存入一定數(shù)據(jù)的sqlite db文件放入demo文件夾中,然后使用Harmony Developer提供的關(guān)系型數(shù)據(jù)庫(kù)的相關(guān)API去讀取之前放入的sqlite文件的內(nèi)容,然后展示出來(lái)

想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com/#zz

文章開始前先分享一個(gè)報(bào)錯(cuò):

錯(cuò)誤: 類重復(fù): com.harmony.onlineedict.ResourceTable

這個(gè)報(bào)錯(cuò)發(fā)生的現(xiàn)場(chǎng)是:我把DEVECO升級(jí)到2.0Beta后,我打開了一個(gè)在升級(jí)之前的項(xiàng)目,在構(gòu)建的時(shí)候就發(fā)生了這個(gè)報(bào)錯(cuò),一時(shí)讓人很迷茫。

迷茫中找到的解決方式是在Build中Clean Project,然后繼續(xù)構(gòu)建就OK了。

正文開始:

申明一下:這個(gè)內(nèi)容是學(xué)習(xí)了李寧老師課程的基礎(chǔ)上寫出來(lái)的,大家可以多多去和李寧老師學(xué)習(xí)哦,這個(gè)老師很硬核!

先把代碼放上來(lái),https://gitee.com/forQinzhikai/harmony-osapplication.git

其中的RdbStoreExample文件夾為該demo完整實(shí)例代碼,大家有什么問(wèn)題,歡迎留言交流

先說(shuō)一下,要寫的demo的大概邏輯,我會(huì)直接將一個(gè)事先已經(jīng)存入一定數(shù)據(jù)的sqlite db文件放入demo文件夾中,然后使用Harmony Developer提供的關(guān)系型數(shù)據(jù)庫(kù)的相關(guān)API去讀取之前放入的sqlite文件的內(nèi)容,然后展示出來(lái)

最后的效果如下:


該demo中操作關(guān)系型數(shù)據(jù)庫(kù)的大概邏輯。

- 1.將拷貝過(guò)來(lái)的sqlite文件進(jìn)行讀入應(yīng)用中

- 2.然后用harmonyOS提供的API去處理讀入的數(shù)據(jù)并進(jìn)行展示

1.將拷貝過(guò)來(lái)的sqlite文件夾讀入應(yīng)用

1.1首先將一個(gè)已經(jīng)存在的sqlite文件放入指定位置

指定位置為/src/main/resources/rawfile,對(duì),必須得這兒,數(shù)據(jù)庫(kù)文件中的內(nèi)容如下:

1.2 然后將讀取上一步操作中放入的sqlite文件,將其讀入本應(yīng)用的所能識(shí)別的空間中(暫時(shí)先這么理解,反正只有這樣做,你才能讀取到)

具體的讀取過(guò)程,我創(chuàng)建了一個(gè)文件:readSqliteFile.java(見文章最后)

這份代碼中還涉及到了封裝打開數(shù)據(jù)庫(kù)和打開數(shù)據(jù)的操作,這一節(jié)只說(shuō)一下讀取上一步拷貝文件的過(guò)程。

首先通過(guò)下面兩行,指定讀取的數(shù)據(jù)要存入的位置:dbPath。

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

 然后通過(guò)下面一行打開剛才我們放入的sqlite文件:resource

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

然后讀取resoruce寫入dbPath

  1. FileOutputStream fos = new FileOutputStream(dbPath); 
  2. byte[] buffer = new byte[4096]; 
  3. int count = 0; 
  4. while((count = resource.read(buffer)) >= 0){ 
  5. fos.write(buffer,0,count); 
  6. }​ 

 2.然后用harmonyOS提供的API去處理讀入的數(shù)據(jù)并進(jìn)行展示

這一塊的代碼也在上一節(jié)展示的readSqliteFile.java文件中。在這里我們用到的是官方提供的數(shù)據(jù)管理模塊中關(guān)系型數(shù)據(jù)庫(kù)的API,鏈接:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/database-relational-overview-0000000000030046,這個(gè)API是RdbSotre系列。

2.1 配置RdbStore

定義一個(gè)RdbStore的全局變量

  1. private RdbStore store;​ 

定義需要的StoreConfig配置文件,可以看到配置文件中指定的數(shù)據(jù)庫(kù)的名字,這里是指的剛才寫入的dbPath中的。

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

定義配置需要的回調(diào)函數(shù),這里我們還用不上,所以先用空的就行

  1. private static final RdbOpenCallback callback = new RdbOpenCallback() { 
  2.  
  3. @Override 
  4.  
  5. public void onCreate(RdbStore rdbStore) { 
  6.  
  7.  
  8. @Override 
  9.  
  10. public void onUpgrade(RdbStore rdbStore, int i, int i1) { 
  11.  
  12.  
  13. };​ 

 2.2 打開RdbStore

首先得new一個(gè) DatabaseHelper

  1. DatabaseHelper helper = new DatabaseHelper(context);​ 

然后從new出的DatabaseHelper調(diào)用getRdbStore獲得RdbStore對(duì)象

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

2.3 從上一步打開的RdbStore中進(jìn)行查詢

首先使用querySql傳入sql語(yǔ)句進(jìn)行查詢

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

然后使用ResultSet類的goToNextRow()進(jìn)行讀取

  1. while(resultSet.goToNextRow()){ 
  2.  
  3. sqliteData sqldata = new sqliteData(); 
  4.  
  5. sqldata.no = resultSet.getInt(0); 
  6.  
  7. sqldata.clubName = resultSet.getString(1); 
  8.  
  9. result.add(sqldata); 
  10.  
  11. }​ 

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

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

  1. package com.harmony.rdbstoreexample; 
  2.  
  3. import ohos.app.AbilityContext; 
  4.  
  5. import ohos.data.DatabaseHelper; 
  6.  
  7. import ohos.data.rdb.RdbOpenCallback; 
  8.  
  9. import ohos.data.rdb.RdbStore; 
  10.  
  11. import ohos.data.rdb.StoreConfig; 
  12.  
  13. import ohos.data.resultset.ResultSet; 
  14.  
  15. import ohos.global.resource.Resource; 
  16.  
  17. import java.io.File; 
  18.  
  19. import java.io.FileOutputStream; 
  20.  
  21. import java.io.IOException; 
  22.  
  23. import java.nio.file.Paths; 
  24.  
  25. import java.util.ArrayList; 
  26.  
  27. public class readSqliteFile { 
  28.  
  29. private AbilityContext context; 
  30.  
  31. private File dirPath; 
  32.  
  33. private File dbPath; 
  34.  
  35. private RdbStore store; 
  36.  
  37. private StoreConfig config = StoreConfig.newDefaultConfig("PremierLeague.sqlite"); 
  38.  
  39. private static final RdbOpenCallback callback = new RdbOpenCallback() { 
  40.  
  41. @Override 
  42.  
  43. public void onCreate(RdbStore rdbStore) { 
  44.  
  45.  
  46. @Override 
  47.  
  48. public void onUpgrade(RdbStore rdbStore, int i, int i1) { 
  49.  
  50.  
  51. }; 
  52.  
  53. public readSqliteFile(AbilityContext context) 
  54.  
  55.  
  56. this.context = context; 
  57.  
  58. dirPath = new File(context.getDataDir().toString() + "/MainAbility/databases/db"); 
  59.  
  60. if(!dirPath.exists()){ 
  61.  
  62. dirPath.mkdirs(); 
  63.  
  64.  
  65. dbPath = new File(Paths.get(dirPath.toString(),"PremierLeague.sqlite").toString()); 
  66.  
  67.  
  68. private void extractDB() throws IOException{ 
  69.  
  70. Resource resource = context.getResourceManager().getRawFileEntry("resources/rawfile/PremierLeague.sqlite").openRawFile(); 
  71.  
  72. if(dbPath.exists()){ 
  73.  
  74. dbPath.delete(); 
  75.  
  76.  
  77. FileOutputStream fos = new FileOutputStream(dbPath); 
  78.  
  79. byte[] buffer = new byte[4096]; 
  80.  
  81. int count = 0; 
  82.  
  83. while((count = resource.read(buffer)) >= 0){ 
  84.  
  85. fos.write(buffer,0,count); 
  86.  
  87.  
  88. resource.close(); 
  89.  
  90. fos.close(); 
  91.  
  92.  
  93. public void init() throws IOException{ 
  94.  
  95. extractDB(); 
  96.  
  97. DatabaseHelper helper = new DatabaseHelper(context); 
  98.  
  99. store = helper.getRdbStore(config,1,callback,null); 
  100.  
  101.  
  102. public ArrayList search(){ 
  103.  
  104. ResultSet resultSet = store.querySql("select * from team",null); 
  105.  
  106. ArrayList result = new ArrayList(); 
  107.  
  108. while(resultSet.goToNextRow()){ 
  109.  
  110. sqliteData sqldata = new sqliteData(); 
  111.  
  112. sqldata.no = resultSet.getInt(0); 
  113.  
  114. sqldata.clubName = resultSet.getString(1); 
  115.  
  116. result.add(sqldata); 
  117.  
  118.  
  119. resultSet.close(); 
  120.  
  121. return result; 
  122.  
  123.  

 ©著作權(quán)歸作者和HarmonyOS技術(shù)社區(qū)共同所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任

想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com/#zz

 

責(zé)任編輯:jianghua 來(lái)源: 鴻蒙社區(qū)
相關(guān)推薦

2021-09-06 10:24:12

鴻蒙HarmonyOS應(yīng)用

2021-07-28 14:40:57

鴻蒙HarmonyOS應(yīng)用

2018-07-18 09:16:39

關(guān)系型非關(guān)系型數(shù)據(jù)庫(kù)

2021-09-03 15:41:00

鴻蒙HarmonyOS應(yīng)用

2017-03-17 14:44:04

關(guān)系型數(shù)據(jù)庫(kù)原理

2010-12-10 10:17:21

關(guān)系型數(shù)據(jù)庫(kù)

2022-06-13 08:30:01

數(shù)據(jù)庫(kù)管理系統(tǒng)

2016-08-23 14:25:19

MySQL約束數(shù)據(jù)庫(kù)

2018-03-26 12:58:52

數(shù)據(jù)庫(kù)OracleMySQL

2013-06-28 11:28:21

Facebook數(shù)據(jù)庫(kù)大數(shù)據(jù)

2013-04-26 16:18:29

大數(shù)據(jù)全球技術(shù)峰會(huì)

2011-06-07 17:14:15

關(guān)系型數(shù)據(jù)庫(kù)壓縮技術(shù)

2021-01-26 13:31:48

數(shù)據(jù)庫(kù)關(guān)系型數(shù)據(jù)庫(kù)冗余

2023-05-20 08:11:55

2023-05-22 16:10:51

動(dòng)態(tài)共享包數(shù)據(jù)庫(kù)

2022-12-27 08:38:45

關(guān)系型數(shù)據(jù)庫(kù)設(shè)計(jì)

2022-07-27 08:32:01

數(shù)據(jù)庫(kù)MySQL

2019-05-05 16:13:07

關(guān)系型數(shù)據(jù)庫(kù)OracleMySQL

2011-10-11 17:07:12

數(shù)據(jù)庫(kù)Internet文件數(shù)據(jù)庫(kù)

2023-03-30 09:27:43

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 人人射人人 | 色综合久久久 | 欧美激情在线一区二区三区 | 三级成人片 | 手机看片在线播放 | 韩日一区 | 啪视频在线 | www.日本三级 | 国产在线91| 国产精品美女久久久久aⅴ国产馆 | 国产精品久久久久久一区二区三区 | 成人在线一区二区 | 男女羞羞免费网站 | 中日韩毛片 | 女生羞羞网站 | 久久国产精品一区二区三区 | 日本欧美黄色片 | 日韩中文在线观看 | 一区二区三区欧美 | 成人免费在线视频 | 一区二区三区欧美在线 | 久久成人国产精品 | 亚洲毛片在线观看 | 99精品国产一区二区青青牛奶 | 国产精品免费一区二区三区四区 | 羞羞视频在线观看 | 欧美日韩手机在线观看 | 国产精品二区三区 | 七七婷婷婷婷精品国产 | 一级片免费在线观看 | 日本免费一区二区三区 | 国产一区不卡 | 国产精品有限公司 | 网页av| 国产成人精品一区二 | 一区二区播放 | 插插插干干干 | 久久性色 | 国产精品久久久久国产a级 欧美日本韩国一区二区 | 天天干干 | 国产精品日韩高清伦字幕搜索 |