20170123

Visual Studio 2015使用SQLite及Entity Framework 6 - 入門篇 - 2

前言

SQLite是一輕量化的資料庫引擎,主要用於程式中的基礎記錄。

Entity Framework 6則是由Microsoft以ADO.NET為基礎而發展出的O/R Mapping架構。

本篇將簡單介紹如何結合二者開發應用程式。

第1篇中,我們簡介了如何安裝SQLite的NuGet套件。接下來會示範如何開發。

 

介面設計

接下來我們可以利用Data Sources來取得ORM的Class,並以之設計簡易的介面

首先打開Data Sources的工具視窗,請選擇「View / Other Windows / Data Sources」

(或是按下[Shift] + [Alt] + [D])

image

 

點選Data Sources工具視窗中的「Add New Data Source」

image

 

在Data Source Type中選擇「Object」以建立與資料庫連結的控制項

image

 

接下來選擇剛建立的Customer Class (如果沒有看到的話,就是第1步作完時沒有先Build一下,所以物件沒有出來)

image

 

按下「Finish」後,會在Data Sources視窗中出現我們選擇的Customer物件

image

 

接下來新增一WinForm名為「Form1」,準備來設計UI介面

長寬先設為640, 480

image

 

重點: 先在Form1.cs的程式碼中加入參考

using System.Data.Entity;

image

這句將會影響讀取資料庫的Load()函式會否出現。

(因為Load是從System.Data.Entity來的Extension Method)

 

點擊Data Sources中的Customer物件,直接將之拉到Form1中

image

 

拉進去後,將會自動產生對應的控制項

如果拉的是物件,則會產生DataGrid

如果拉的是屬性,則會產生Label + TextBox

請拉入剩下的屬性,設計成如下樣式

image

 

各位可以注意到,拉進Class後,會自動加入customerBindingSource

image

 

於此我們再手動從Toolbox中加入一個BindingNavigator,取名為「customerBindingNavigator」

並把其屬性中的BindingSource設為「customerBindingSource」

image

 

設計完介面後,大概會長得像下面一樣

image

 

再來點擊Form1的空白處,增加「Form_Load」的事件,並填入下列程式碼

image

 

再來可以先Build一下,Run一下程式

點擊「Add New」並輸入一些假資料

image

 

不論你是在DataGrid中輸入,或是在下面的TextBox輸入,因為有BindingSource的關係,你可以看到資料會同步顯示

image

 

但是重新啟動應用程式之後,疑,資料不見了~~~

因為我們未把異動的部份存入資料庫,現在來加個儲存按鈕的設定

點擊新增一個按鈕如下圖

image

 

將新增的按鈕命名為「btnSave」,並將Image屬性設為一張儲存按鈕的圖片 (自己找)

image

 

再來在儲存按鈕上點二下以建立它的事件

image

 

大功告成,最後畫面會長得像這樣

image

 

有幾點小地方要注意:

1. 因為Id在Model Designer中是設為StoreGeneratedPattern: Identity,所以我們新增時,Id部份可不輸,或是亂輸。因為DB中Id是設為自動增量,它會自動增量,不會理我們輸入的數

2. 每一個文字框輸入後,都要Tab一下換到別的控制項,以免BindingSource沒吃到我們輸入的值,造成產生NULL值,而我們之前設計的Customer Table又不接受NULL值,引發Exception

3. 最後一點,特別重要。本篇之程式碼只是範例,實際使用會檢查輸入值之類的檢核,以及加入資料庫異常的處理,大家使用程式碼時要特別小心

 

 

總結

本篇介紹了如何使用簡單的方式,建立SQLite資料庫,並利用EF6來存取它。後續有我會再分享比較進階的東西

20170122

以SQLite Manager管理SQLite

前言

SQLite是一輕量級的嵌入式資料庫,一般用於應用程式內部使用。

但是雖然它很好用,管理用的Client端卻很缺乏。

如果不想花錢買Navicat的話,就要手動自己寫了 (有沒有這麼慘)。

不過之前逛到一篇網站,介紹了一個好用的工具,SQLite Manager,解決了我多年來的麻煩。

以下介紹這個工具的用法給各位。

 

 

安裝

SQLite Manager的網址: https://goo.gl/9yyNsH。這邊是原始碼,安裝方式見下面敘述。

1. 首先要先安裝Firefox,因為SQLite Manager是Firefox的Addons (此部份略過)

2. 在Firefox中連結至「about:addons」,點選「更多附加元件」

image

 

3. 或是直接連結至https://goo.gl/ff65。搜尋「sqlite」,並點擊「SQLite Manager」

image

 

4. 直接點擊「新增至Firefox」,即可安裝至Firefox

image

 

5. 安裝完成後。我們可以從「工具 / SQLite Manager」來開啟這個工具

image

 

6. 剛開啟不會開啟任何資料庫 (若曾開啟過的話,會詢問是否開啟之前的資料庫)

我們可以點選「New Database」來建立新的SQLite資料庫檔案

image

 

7. 直接輸入資料庫檔案名稱即可,sqlite的附檔名會自動加上

image

 

8. 建完之後,可以右點Tables以建立新的Table

image

 

9. 接下來請依螢幕上的範例建立一張顧客基本資料表 (Customer)

image

須注意Id此欄位,我們勾選了自動增量 (Autoinc)

 

SQLite Manager會自動產生CREATE TABLE相關語法

image

 

產生完成後的Table長得像這樣

image

因為我們有設自動增量 (Autoinc),所以SQLite Manager自動幫我們建了一個Sequence

 

再來點選Customer資料表中的「Add」,增加一筆測試用記錄

image

 

輸入以下資料 (可依需求更改)

image

 

這樣我們就有一筆測試用資料在資料庫中了

image

 

 

總結

以上就是SQLite Manager使用方法簡述,怎麼樣,是不是簡化了很多功呢?

重點是免費的哦。

20170109

[Diablo III] [Patch 2.4.3] 如何拿到乳牛寵物 / 皇家小牛寵物

前言

想帶隻牛上街,炫耀一下嗎? 還不快來看如何取得

image

因為此次活動 (限定在2017/01)是為了紀念Diablo系列二十週年。所以很多東西都是向一代致敬的。本任務也不例外。

 

步驟

1. 進入The Darkening of Tristram (日期限定只在2017/01,Diablo系列二十週年記念)

image

 

2. 進入地圖此處的傳送門 (在噴泉旁邊)

image

image

前往地圖上紅框標示處,可以看到一代地城Labyrinth的入口

image

 

3. 進入Labyrinth後,直衝第9層 (因為一代此任務在第9層)

在第九層可以看到類似蘑菇的東西,點擊可得到「Rotten Mushroom」 (一代為Black Mushroom,過了二十年爛掉了~~)

image

image

 

4. 回到Tristram於地圖標示處可找到Cauldron (巫婆煮藥用的鍋),點擊後得到「Witch’s Brew」 (巫婆私釀)

image

image

image

image

 

 

5. 還記得翻Farnham的屍體會顯示什麼嗎??
「You need a strong drink to wake this spirit. (你需要一瓶強力的飲料來喚配這個靈魂)」
店小二~~  給他來一瓶過期很久的「純釀」 XD

image

掉出了酒鬼的欠債 「Drunkard’s Debt

 image

 

7. 拿到了錢。咦,Ogden的屍體似乎說了啥~

「This man died penniless, giving all he had to his neighbors. (此人往生時身無分文,將他所有的都給了鄰居)」

真是個好鄰居啊,補償他一點吧。

image

image

獲得了「Garda’s Letter

image

偷讀一下,原來是給Healer的信。知道要找誰了吧 (Pepin)

image

 

8. 不知道Pepin是Healer也不要緊,他的屍體也提示了他的身份~

This man’s spirit yearns to help the wounded and afflicted. (此人的靈魂渴望著幫忙傷者與受折磨的人們)」

image

image

好心的醫生給了我們藥方「Healer’s Prescription」~~

上面寫著「孩子的木腿」,該不會是那個吧~~

image

 

9. 猶記得鐵匠人最好了,看看他的屍體寫了啥

image

「The restless spirit of this blacksmith needs to make one last treasure. (這位不得安息的鐵匠靈魂,渴望再製作出最後一件寶物)」

image

掉出藍圖了。

不出所料是「Wirt’s Leg」,拿回原來城鎮給鐵匠製作吧!

image

image

 

10. 回城讓鐵匠學了新藍圖後,可在Mace處找到此武器 (Mace?? 木腿不該是Legging or Boot嗎??)

image

製作完成後,得到新成就「Pssst… Over Here…」 (以前Wirt會說的話)

image

拿個木腿能幹嘛? 找鐵匠拆了它吧 (那當初幹嘛作@@)

沒想到木腿裡藏了一張藏寶圖

image

2 , 1, 3。剛剛巫婆小屋旁好像有三頭死牛,而且點了還會跑出靈魂~

來試試看 (按照2→1→3的順序點擊)

image

點完出現了「Abandoned Farmstead」,進去看看吧。

image

 

11. 進去農場後,發現了一堆牛
農場正中央有Wirt的寶箱

image

打開看看,得到皇家小牛「Royal Calf」

image

image

右點後,就可以得到新的寵物囉。

帶牛去逛街吧。

image