EP 22: Create SQLite DB for TopStore App

Hello, 各位 iT邦帮忙 的粉丝们大家好~~~

本篇是 Re: 从零开始用 Xamarin 技术来复刻过去开发的一个 App: TopStore 系列文的 EP22。

由於先前用联络人资料是透过 MockData 用程序所产生的固定资料(白话文就是写死的资料),当 App 重新执行时就会 "复原" 成 MockData 一开始产生的联络人资料,这样当然无法正常使用(难道要使用者永远不能关闭 App 吗...XD)。

所以本篇要来介绍使用 SQLite 套件在 TopStore App 来做资料储存。

开始罗!


首先,先来装 SQLite 的 Nuget 套件在 Xamarin 的整个方案中。

在 Visual Studio 当中的方案总管,在方案的右键选单点选 "管理方案 Nuget 套件" 选项。
Nuget - 解决方案

打开 Nuget - 解决方案後。
Nuget - 解决方案

在 "浏览" 分页搜寻 "sqlite-net-pcl" (请注意搜寻的关键字)。
搜寻 sqlite-net-pcl

勾选所有专案後,点选安装。
安装 sqlite-net-pcl

安装过程当中若是第一次安装此 Nuget 套件,会需要接受授权条款以及变更允许。
变更允许

稍微等待下载与安装,直到 Visual Studio 的输出窗格显示 "已完成"。
输出窗格显示"已完成"

从 Visual Studio 的方案总管 Xamarin.Forms 专案确认 SQLite 的 Nuget 套件的安装。
确认 sqlite 的 Nuget 套件的安装

接下来先来处理 Models 的 Person 资料储存,规划要存到 SQLite 资料表的资料格式(Data Schema)。

找到 Models 资料夹底下的 Person 类别。
Person 类别

透过 SQLite 挂上 的其设计的 Attritube。
Person 类别
(请记得 using SQLite 的命名空间)

接着再针对 Xamarin.Forms 专案新增一个 Services 资料夹。
加入 Services 资料夹

继续在 Services 资料夹中增加新的 DbService 类别。
加入 DbService 类别 1

加入 DbService 类别 2

新增 DbService 类别完毕後,先在该类别引用 SQLite 命名空间。

新增 DbService 类别完成後 1

新增 DbService 类别完成後 2

若不考虑其他问题,直接撰写最基本的 Singleton 建立 DbService 中的设计来使用 SQLite。
撰写基本 Singleton 完成 DbService 设计 1

在 DbService 的建构方法中,使用 Xamarin.Essentials 的 FileSystem 取得 App 的资料夹位址。
Xamarin.Essentials 的 FileSystem

再透过 System.IO.Path 来建立资料夹与档案的合并,取得 DB 档的档案路径,准备建立 SQLiteConnection。
System.IO.Path 取得档案路径

建立 SQLiteConnection 後并透过其 Connection 建立 Person 的资料 Table。
SQLiteConnection 建立 Person 的资料 Table

接着在 DbService 当中设计一个简易 GetPeople 的方法,先不讨论方法内部要如何取得 SQLite DB 当中的资料,只为了给外部可以呼叫执行。
GetPeople 方法设计

接着再打开 PeoplePageViewModel 找到过去设计类别建构式的部分。
PeoplePageViewModel 建构式

并且把其程序码换成呼叫上述所设计的 GetPeople 方法赋予 People 资料。
PeoplePageViewModel 建构式

以上完成!

接下来就要再在双平台 (iOS、Android) 环境执行看看并且分析其 SQLite DB 的建立状况罗!

下篇 EP23 再见~~~

呜罗蹦咚~~~


<<:  Day15 Let's ODOO: Menu

>>:  好记性的浏览器:localStorage

Day12 职训(机器学习与资料分析工程师培训班): Python程序设计

今天教学Numpy & Pandas & Matplotlib import pan...

Day 4 如何规划拟定隐私三宝

隐私三宝包含了隐私条款、服务条款、Cookie policy,其中隐私条款若要自己从无到有生出来,似...

30天打造品牌特色电商网站 Day.9 RWD响应式设计介绍

哈罗~很快的已经来到了第九天,前面带给大家都是一些网页的基础,後面会针对各种主题有更深入的探讨喔,今...

Day 06 - Snapshots

本篇重点 Snapshots 介绍与属性说明 VS Code 查看Function参数内容 Snap...

JS AJAX基础实作(3) DAY28

今天要来做gotop按钮啦 我们先来看一下程序码 function gotoTop() { if (...