[下班小幫手] Node.js整合使用Sqlite3
大部份的程式都會做資料記錄,而儲存紀錄的方式很多,由最簡單的文字檔txt、JSON、XML…等,都可以把資料紀錄在獨立一個檔案,也可以考慮使用sqlite,可以使用SQL語法來建立、更新、刪除資料,我認為這是一個很好的選擇…
說到資料庫,大部份的人都會想到MySQL、MS SQL Server、PostgreSQL、mongodb,不過對於實作一個小程式來說,使用上述的資料庫有點大材小用,我的需求是能使用SQL作簡單的資料新增、修改、刪除及條件查詢,初期只會有兩個資料表(存記錄、存設定),所以Sqlite就是一個很好的選擇。
想知道最新消息、版本資訊,亦或是說明文件,可以進入Sqlite官網查看,下面就直接進入 下班小幫手 ,如何使用node去操作Sqlite。
關於程式的撰寫,不知道有多少人會根據功能寫獨立的模組,或是全部都寫在main.js就好?
這個部份,就我看過的書來說,很多都不會特別讓程式「獨立」一個檔案(模組),一股腦的全部寫在一個檔案(例如:main.js、index.js),所以在Side Project時候就會去想是不是需要獨立模組js出來,要如何分出來,檔案資料庫結構應該如何,參考github上的範例,好像也找不出什麼規則,後來的結論是…以自己看的懂的結構就可以XD。
安裝Sqlite3
1 | npm install sqlite3 --save |
初始化資料庫
建立*.db檔,並判斷是否存在資料表,不存在資料表,則立即新增。
新增資料表的時候使用「db.run」,
- 參數1為欲執行的SQL
- 參數2為參數1要代入的常式
- 參數3為執行的callback,此callback不會回應執行的結果,例如參數1為SELECT,callback不會回應搜尋的結果,callback只會回應是否有錯誤,當執行有錯誤,第一參數會是錯誤的資訊;如果沒有錯誤,則為null。
1 | //載入,並取得sqlite3的物件 |
搜尋紀錄
因為db.run不會回應SQL執行的內容,所以在搜尋記錄的部分會使用另一個方法「db.all」來取得打卡記錄。
1 | let strSQL = `SELECT FROM WorkLog WHERE LogTime BETWEEN ${StartDateTime} AND ${EndDateTime}`; |
新增紀錄
因為新增記錄,只需要知道新增是否成功,所以此處可以使用db.run,再根據callback的第一個參數了解是否執行成功。
1 | let now = new Date(); //目前時間。 |
其他執行的方法
1 | //db.get,取得資料,只會回應符合條件的第一筆資料。例如: |
由上述內容應該就可以知道當需要更新、刪除記錄的時候,應該使用什麼方法執行了。
更新一筆記錄(或是之後會加入實作的更新設定值),使用db.run,因為執行更新的時候只需要知道執行是否成功,不會有回應資訊。
同樣地,刪除一筆記錄的一樣也是使用db.run,只需要知道執行是否成功即可