EP 24: The CRUD & Search of SQLite in TopStore App

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

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

上一篇 EP23 当中已经确认到双平台 (iOS、Android) 都有根据 EP22 中所撰写的程序,正确的建立了想要的 SQLite DB 档案在 App 的专属资料夹当中。

接着本篇 EP24 就来撰写有关对於 SQLite DB 处理 "写、读、改、删 与 搜寻" 等操作,以便操作 App 的使用者能正确的将 "联络人" 给建立起来。

那就开始罗~~~


打开 DBService 的类别设计,在命名空间引用上加入 using System.Linq,因为接下来要操作的是 ORM 设计的 SQLite.NET。

DbService 中对於 Person 资料的 "读、搜寻"。
设计 GetPeople 与 GetPerson 的两个方法,两个方法都有设定需传递的引数,比较特殊的是 GetPeople 的引数有设计预设值。
GetPeople 与 GetPerson 的方法

DbService 中对於 Person 资料的 "写、改"、""。
设计 SavePerson 与 DeletePerson 的两个方法,两个方法都有设定需传递的引数。
SavePerson 与 DeletePerson 的方法

接下来打开 PersonPageViewModel 当中找到 DeleteCommand,替换掉原本呼叫 MockData 的 DeletePerson 方法。
修改 DeleteCommand 的设计

透过 DbService 的 Instance 来呼叫设计在 DbService 中的 DeletePerson 方法。
呼叫 DeletePerson 方法

继续在 PeoplePageViewModel 并找到当初设计的 SearchCommand 的方法,把其中利用 MockData 搜寻 People 资料的部份给替换掉。
改写 SearchCommand 的方法

透过 DbService 的 Instance 来呼叫设计在 DbService 中的 GetPeople 方法。
呼叫 GetPeople 方法

接下来打开 PersonDetailPageViewModel 并找到当初设计的 PersonId 的属性(先前设计用来接收传递资料的属性),把其中利用 MockData 的 GetPerson 方法给替换掉。
改写 PersonId 的属性设定

透过 DbService 的 Instance 来呼叫设计在 DbService 中的 GetPerson 方法。
呼叫 GetPerson 方法

找到 PersonDetailPageViewModel 的建构式,替换掉当初利用 MockData 设计的 NewPerson。
改写 PersonDetailPageViewModel 的建构式

直接 new 一个 Person 的物件赋予的 EditPerson 属性(有可能团队的设计规范上会禁止撰写直接 new 物件的程序,请根据设计斟酌考量)。
赋予设计的 EditPerson 属性

继续在 PersonDetailPageViewModel 当中找到 SaveCommand,替换掉原本呼叫 MockData 的 EditPerson 方法。
修改 SaveCommand 的设计

透过 DbService 的 Instance 来呼叫设计在 DbService 中的 SavePerson 方法。
呼叫 SavePerson 方法

最後再打开 PeoplePage 并设计 override(覆写) 其 Page 的 OnAppearing 生命周期方法。
覆写 OnAppearing 生命周期方法

在 OnAppearing 方法当中撰写透过 DbService 设计的 GetPeople 方法,赋予其 PeoplePageViewModel 中的 People 属性资料。
DbService 设计的 GetPeople 方法设定 People 资料

再一次回到 PeoplePageViewModel 中并找到其建构式,将上一篇 EP23 原本改写的 People 资料的程序给注解。
PeoplePageViewModel 其建构式注解程序

由於在 PepolePage 的 OnAppearing 方法中已经有设计 People 的资料取得,所以在 ViewModel 建构式先设定一次 People 的资料就显得较无意义。

接下来就在双平台(iOS、Android) 来执行看看吧!

"新增" 联络人。
双平台 "新增" 联络人的执行展示 1

双平台 "新增" 联络人的执行展示 2

双平台 "新增" 联络人的执行展示 3

双平台 "新增" 联络人的执行展示 4

双平台 "新增" 联络人的执行展示 5

"编辑" 联络人。
双平台 "编辑" 联络人的执行展示 1

双平台 "编辑" 联络人的执行展示 2

双平台 "编辑" 联络人的执行展示 3

双平台 "编辑" 联络人的执行展示 4

双平台 "编辑" 联络人的执行展示 5-1

双平台 "编辑" 联络人的执行展示 5-2

双平台 "编辑" 联络人的执行展示 6

"搜寻" 联络人。
双平台 "搜寻" 联络人的执行展示 1

双平台 "搜寻" 联络人的执行展示 2

双平台 "搜寻" 联络人的执行展示 3

"删除" 联络人。
双平台 "删除" 联络人的执行展示 1

双平台 "删除" 联络人的执行展示 2

双平台 "删除" 联络人的执行展示 3

以上 Person 资料的 "写、读、改、删 与 搜寻" 都能在 SQLite DB 处理完成!

若有兴趣可以按照上一回 EP23 的做法,在做每一个操作的时候都把 SQLite DB 档案从模拟器拉出来看看喔~~~

下一篇 EP25 见唷!

撒啦嘎唷~~~


<<:  ASP.NET MVC 从入门到放弃(Day27)-IIS 发布介绍

>>:  Day 20 Hero动画

[Linux] 让程序在背景执行

订阅patreon即可看到更多文章 https://www.patreon.com/wade3c ...

#5 JavaScript in Browser

今天写一些浏览器跟 DOM 的东西。 DOM 全名是 Document Object Model,是...

DAY29 - 切版的学习历程与方向

今天就我自己的经验跟大家分享一下, 培养切版技能的方向~ 第一阶段:练习什麽静态版面都要可以切出来 ...

Day 5 双向绑定及回圈

今天来介绍v-model&data跟v-for的用法 data→用来储存里面的资料,当dat...

14 - tig - git 的文字介面

Git 是开发者们最常接触到的工具之一,大部分的专案都使用它作为版本控制的工具。使用者可以直接用 g...