• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 数据库及持久化<a name="ZH-CN_TOPIC_0000001152064139"></a>
2
3-   [简介](#section117mcpsimp)
4-   [目录](#section124mcpsimp)
5-   [约束](#section128mcpsimp)
6-   [接口说明](#section136mcpsimp)
7
8-   [使用说明](#section163mcpsimp)
9    -   [插入接口参数说明](#section1099113151207)
10    -   [删除接口参数说明](#section1098113151208)
11    -   [更新接口参数说明](#section1099113151207)
12    -   [查询接口参数说明](#section1096113151208)
13    -   [接口调用代码示例](#section1558565082915)
14
15-   [相关仓](#section206mcpsimp)
16
17## 简介<a name="section117mcpsimp"></a>
18
19数据库及持久化模块负责电话服务子系统中的SIM卡/短彩信等模块持久化数据存储,提供DataAbility访问接口。
20
21**图 1**  数据库及持久化架构图<a name="fig13267152558"></a>
22
23![](figures/zh-cn_architecture-of-the-data-storage-module.png)
24
25## 目录<a name="section124mcpsimp"></a>
26
27```
28/base/telephony/data_storage     # 数据库及持久化
29├─ common                           # 通用文件
30│  ├─ include                      # 头文件目录
31│  └─ src                          # 实现代码目录
32├─ config                           # config.json配置文件
33├─ figures                          # Readme资源文件
34├─ opkey                            # 随卡框架
35│  ├─ include                  # 头文件目录
36│  └─ src                    # 实现代码目录
37├─ pdp_profile                      # 网络运营商
38│  ├─ include                      # 头文件目录
39│  └─ src                          # 实现代码目录
40├─ signature                        # 签名文件
41├─ sim                              # sim卡
42│  ├─ include                      # 头文件目录
43│  └─ src                          # 实现代码目录
44├─ sms_mms                          # 短彩信
45│  ├─ include                      # 头文件目录
46│  └─ src                          # 实现代码目录
47└─ test                             # 测试相关
48   └── unit_test                   # 单元测试相关代码
49```
50
51## 约束<a name="section128mcpsimp"></a>
52
53- 开发语言:C++
54
55- 软件约束:需要与以下服务配合使用:公共基础子库系统,应用框架子系统。
56
57- 硬件约束:无
58
59- 使用场景:当用户需要获取电话服务子系统中的SIM卡/短彩信等模块持久化数据时,可通过DataAbilityHelper提供的增/删/改/查接口来获取数据。
60
61  访问时需要提供对应的权限和URI。
62
63### 接口说明<a name="section136mcpsimp"></a>
64
65**表 1**  增/删/改/查接口
66
67<a name="table165976561598"></a>
68
69| 接口定义                                                     | **接口描述** |
70| ------------------------------------------------------------ | ------------ |
71| int Insert(const Uri &uri, const NativeRdb::ValuesBucket &value) | 插入数据     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
72| int Delete(const Uri &uri, const NativeRdb::DataAbilityPredicates &predicates) | 删除数据     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
73| int Update( const Uri &uri, const NativeRdb::ValuesBucket &value, const NativeRdb::DataAbilityPredicates &predicates) | 更新数据     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
74| std::shared_ptr\<NativeRdb::AbsSharedResultSet\> Query( const Uri &uri, const std::vector\<std::string\> &columns, const NativeRdb::DataAbilityPredicates &predicates) | 查询数据     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
75
76**表 2**  权限说明
77
78<a name="table165976561598"></a>
79
80| 模块           | **所需权限**                                                 |
81| -------------- | ------------------------------------------------------------ |
82| 短彩信模块     | ohos.permission.READ_MESSAGES                                |
83| SIM卡模块      | ohos.permission.GET_TELEPHONY_STATE<br />ohos.permission.SET_TELEPHONY_STATE |
84| 网络运营商模块 | ohos.permission.GET_TELEPHONY_STATE<br />ohos.permission.SET_TELEPHONY_STATE |
85| 随卡框架模块 | ohos.permission.GET_TELEPHONY_STATE<br />ohos.permission.SET_TELEPHONY_STATE |
86
87## 使用说明<a name="section163mcpsimp"></a>
88
89### 插入接口参数说明<a name="section1099113151207"></a>
90
91**表 3**  Insert接口参数说明
92
93<a name="table1234838197"></a>
94
95| 参数  | **说明**                              |
96| ----- | ------------------------------------- |
97| uri   | 资源路径                              |
98| value | 数据集合,字段对应当前操作的表结构字段 |
99
100### 删除接口参数说明<a name="section1098113151208"></a>
101
102**表 4**  Delete接口参数说明
103
104<a name="table1234838197"></a>
105
106| 参数       | 说明                                  |
107| ---------- | ------------------------------------- |
108| uri        | 资源路径                              |
109| value      | 数据集合,字段对应当前操作的表结构字段 |
110| predicates | 删除条件                              |
111
112### 更新接口参数说明<a name="section1097113151210"></a>
113
114**表 5**  Update接口参数说明
115
116<a name="table1234838197"></a>
117
118| 参数       | 说明     |
119| ---------- | -------- |
120| uri        | 资源路径 |
121| predicates | 更新条件 |
122
123### 查询接口参数说明<a name="section1096113151208"></a>
124
125**表 6**  Query接口参数说明
126
127<a name="table1234838197"></a>
128
129| 参数       | 说明           |
130| ---------- | -------------- |
131| uri        | 资源路径       |
132| columns    | 查询返回的字段 |
133| predicates | 查询条件       |
134
135### 接口调用代码示例<a name="section1558565082915"></a>
136
137以查询/插入/删除/更新短彩信数据为例,主要步骤和代码如下:
138
1391. 使用SystemAbilityManagerClient获得SystemAbilityManager对象。
1402. 使用saManager获得指定服务Id的IRemoteObject对象。
1413. 使用IRemoteObject创建DataAbilityHelper对象。
1424. 调用DataAbilityHelper::Query接口访问,并接收处理返回的数据。
143
144   创建DataAbilityHelper:
145   ```
146   std::shared_ptr<AppExecFwk::DataAbilityHelper> CreateDataAHelper(int32_t systemAbilityId)
147   {
148       //通过SystemAbilityManagerClient获得SystemAbilityManager
149       auto saManager = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
150       if (saManager == nullptr) {
151           DATA_STORAGE_LOGE("DataSimRdbHelper Get system ability mgr failed.");
152           return nullptr;
153       }
154       // 获得IRemoteObject
155       auto remoteObj = saManager->GetSystemAbility(systemAbilityId);
156       while (remoteObj == nullptr) {
157           DATA_STORAGE_LOGE("DataSimRdbHelper GetSystemAbility Service Failed.");
158           return nullptr;
159       }
160       // 创建DataAbilityHelper
161       return AppExecFwk::DataAbilityHelper::Creator(remoteObj);
162   }
163   ```
164   查询短彩信信息:
165   ```
166   std::shared_ptr<NativeRdb::AbsSharedResultSet> SmsSelect(std::shared_ptr<AppExecFwk::DataAbilityHelper> helper)
167   {
168       // 资源路径
169       Uri uri("dataability:///com.ohos.smsmmsability/sms_mms/sms_mms_info");
170       //查询返回的字段
171       std::vector<std::string> colume;
172       // 发送者号码
173       colume.push_back("sender_number");
174       // 消息标题
175       colume.push_back("msg_title");
176       // 消息内容
177       colume.push_back("msg_content");
178       // 查询谓词
179       NativeRdb::DataAbilityPredicates predicates;
180       // 调用DataAbilityHelper::Query接口查询
181       return helper->Query(uri, colume, predicates);
182   }
183   ```
184   插入短彩信信息:
185   ```
186   int SmsInsert(std::shared_ptr<AppExecFwk::DataAbilityHelper> helper)
187   {
188       Uri uri("dataability:///com.ohos.smsmmsability/sms_mms/sms_mms_info");
189       NativeRdb::ValuesBucket value;
190       // 接收者号码
191       value.PutString(SmsMmsInfo::RECEIVER_NUMBER, "138XXXXXXXX");
192       // 消息内容
193       value.PutString(SmsMmsInfo::MSG_CONTENT, "ceshi");
194       value.PutInt(SmsMmsInfo::GROUP_ID, 1);
195       return helper->Insert(uri, value);
196   }
197   ```
198   删除短彩信信息:
199   ```
200    int SmsDelete(std::shared_ptr<AppExecFwk::DataAbilityHelper> helper)
201    {
202        Uri uri("dataability:///com.ohos.smsmmsability/sms_mms/sms_mms_info");
203        NativeRdb::DataAbilityPredicates predicates;
204        // 删除MSG_ID为1的信息
205        predicates.EqualTo(SmsMmsInfo::MSG_ID, "1");
206        return helper->Delete(uri, predicates);
207    }
208   ```
209   更新短彩信信息:
210   ```
211   int SmsUpdate(std::shared_ptr<AppExecFwk::DataAbilityHelper> helper)
212   {
213       Uri uri("dataability:///com.ohos.smsmmsability/sms_mms/sms_mms_info");
214       NativeRdb::ValuesBucket values;
215       // 信息内容
216       values.PutString(SmsMmsInfo::MSG_CONTENT, "hi ohos");
217       NativeRdb::DataAbilityPredicates predicates;
218       // 信息Id
219       predicates.EqualTo(SmsMmsInfo::MSG_ID, "1");
220       return helper->Update(uri, values, predicates);
221   }
222   ```
223
224
225## 相关仓<a name="section206mcpsimp"></a>
226
227[电话服务子系统](https://gitee.com/openharmony/docs/blob/master/zh-cn/readme/%E7%94%B5%E8%AF%9D%E6%9C%8D%E5%8A%A1%E5%AD%90%E7%B3%BB%E7%BB%9F.md)
228
229**telephony_data_storage**
230
231[telephony_core_service](https://gitee.com/openharmony/telephony_core_service/blob/master/README_zh.md)
232
233[telephony_sms_mms](https://gitee.com/openharmony/telephony_sms_mms/blob/master/README_zh.md)
234
235[telephony_cellular_call](https://gitee.com/openharmony/telephony_cellular_call/blob/master/README_zh.md)
236
237[telephony_call_manager](https://gitee.com/openharmony/telephony_call_manager/blob/master/README_zh.md)
238
239