Posts
LiteDB - FileStorage
為了控制記憶體的使用量,LiteDB 限制資料的存放量為 1 MB,1 MB 對於一般的資料而言是已經足夠了,但是對於二進制檔案來說就不怎麼足夠,所以 LiteDB 提供 FileStorage 用以存放二進制檔案。
FileStorage 支援以下方法:
Method Description Upload Send file or stream to database. Can be used with file or Stream. If file already exists, file content is overwritten. Download Get your file from database and copy to Stream parameter Delete Delete a file reference and all data chunks Find Find one or many files in _files collection. Returns LiteFileInfo class, that can be download data after.
read morePosts
LiteDB - Query data
要取得 LiteDB 內的資料,首先需先將 LiteDB 開啟,取得對應的 Collection,調用 Collecion.FindAll 即可取得 Collection 內所有的資料。
... using (var db = new LiteDatabase(dbFile)) { var collection = db.GetCollection<T>(collectionName); ... var collectionItems = collection.FindAll(); ... } using System; namespace LiteDB.Demo8 { class Program { static void Main(string[] args) { using (var db = new LiteDatabase("Person.db")) { var persons = db.GetCollection<Person>("persons"); foreach (var person in persons.FindAll()) { Console.WriteLine(person.NickName); } } } } public class Person { public int ID { get; set; } public String Name { get; set; } public String NickName { get; set; } } } 要找尋滿足特定條件的資料的話,可以調用 Collection.
read morePosts
LiteDB - Update data
要將 LiteDB 內的資料更新,需先將 LiteDB 開啟,取得 Collection,取得 Collection 內的元素,更新元素的屬性值後,再用 Collection.Update 將資料更新回 LiteDB 即可。
… using (var db = new LiteDatabase(dbFile)) { var collection = db.GetCollection<T>(collectionName); ... collectionItem.Property = newValue; collection.Update(collectionItem); } 像是下面這個範例就會將資料寫入,將塞入的資料做個變更。
using System; namespace LiteDB.Demo2 { class Program { static void Main(string[] args) { using (var db = new LiteDatabase("Person.db")) { var persons = db.GetCollection<Person>("persons"); var firstPerson = collection.FindById(1); firstPerson.Name = "Larry Nung"; firstPerson.NickName = "Larry"; persons.Update(firstPerson); } } } public class Person { public int ID { get; set; } public String Name { get; set; } public String NickName { get; set; } } } 若是要更新為全新的資料,也可以建立個資料物件指定 ID 將之替換。
read morePosts
LiteDB - Insert data
要將資料塞入 LiteDB,需先準備一個用來存放資料的 Model,該 Model 跟一般的 Model 沒什麼太大的不同,不需要特別加掛 Attribute,只需要為 Model 加上一個 ID 的數值屬性,讓 LiteDB 用以識別資料。
public class MyModel { public int ID { get; set; } ... } 再來準備要塞入的資料,ID 值不用填,LiteDB 會自行填入。
var collectionItem = new T() { ... }; 最後將 LiteDB 開啟,取得對應的 Collection,用 Collection.Insert 將資料塞入即可。
… using (var db = new LiteDatabase(dbFile)) { var collection = db.GetCollection<T>(collectionName); ... collection.Insert(collectionItem); } 程式撰寫起來會像下面這樣:
using System; namespace LiteDB.Demo1 { class Program { static void Main(string[] args) { using (var db = new LiteDatabase("Person.
read morePosts
LiteDB - Create and open DB
LiteDB 使用上跟一般資料庫一樣需要先建立資料庫操作物件,帶入指定的資料庫檔案位置建立出 LiteDatabase 物件實體即可。
… using (var db = new LiteDatabase(dbFile)) { ... } LiteDatabase 物件實體建立後,即可針對 LiteDatabase 物件實體進行資料庫的操作,資料庫的連線 LiteDB 會幫我們開啟,不需自行開啟。若指定的資料庫檔案位置不存在資料庫檔案,LiteDB 會自動建立指定的資料庫檔案。
除了檔案形式的資料庫外,LiteDB 也允許我們使用記憶體形式的資料庫,只要建立 MemoryStream 帶入建立 LiteDatabase 的物件實體即可。
… using (var ms = new MemoryStream(buffer)) using (var db = new LiteDatabase(ms)) { ... } 這樣資料庫就會存在於記憶體中。在需要存放些資料在記憶體中的某些情境下,就可以評估使用 In-Memory 的 LiteDB。
read morePosts
LiteDB - A .NET NoSQL Document Store in a single data file
LiteDB 是一用 C# 寫的 .NET NoSQL 免費開源資料庫。
具備有以下特點:
Lightweight Fast Thread safe Process safe Portable UWP and Xamarin iOS/Android ACID transaction Recovery data in writing failure (journal mode) Map your POCO class to BsonDocument Fluent API for custom mapping Cross collections references (DbRef) Store files and stream data (like GridFS in MongoDB) LINQ support FREE for everyone - including commercial use Shell command line Datafile encryption using DES (AES) cryptography LiteDB 有點像是 MongoDB 與 SQLite 的混合體,操作與使用上跟 MongoDB 相似,但又跟 SQLite 一樣是 Standalone 的資料庫,不像 MongoDB 需要架設服務,只需引用 250 KB 左右的組件即可直接使用。
read morePosts
>-
條款五十九,嘗試使用 RETURNING INTO,而非使用 Using OUT 綁定輸出參數。
像是下面這段程式使用了 Using OUT 語法去綁定輸出參數就不被建議。
CREATE OR REPLACE PACKAGE BODY employee_api IS PROCEDURE upd_salary (in_employee_id IN employees.employee_id%TYPE ,in_increase_pct IN types_up.percentage ,out_new_salary OUT employees.salary%TYPE) IS co_sql_stmt CONSTANT types_up.big_string_type := ' UPDATE employees SET salary = salary + (salary / 100 * :1) WHERE employee_id = :2 RETURNING salary INTO :3'; BEGIN EXECUTE IMMEDIATE co_sql_stmt USING in_increase_pct, in_employee_id, OUT out_new_salary; END upd_salary; END employee_api; / 建議的做法是用 RETURNING INTO 語法去綁定輸出參數。
read morePosts
sonar - Formatters
sonar 的 formatter 可用來設定 sonar 分析結果的格式,目前提供 summery、json、stylish、codeframe 這幾個 formatter,可透過 sonar 設定檔指定使用。
像是指定 summary formatter 的話,sonar 分析完就只會摘要出各個 rule 的 warning 與 error 數。
使用 json formatter 的話,sonar 分析結果會用 json 格式呈現。
使用 stylish formatter 的話,sonar 分析結果會依 resource 告知哪一列哪一行及違反的 rule。
使用 codeframe formatter 的話,sonar 分析結果會顯示違反的 rule 以及出問題的程式碼。
Link List of official formatters | sonar documentation
read morePosts
sonar - Solve permission issue
在用 npm 進行 sonar 的安裝時,有可能會碰到 permission denied 的錯誤。
這時可以修改 npm 的預設目錄,再次用 npm 運行 sonar 的安裝即可。
Link User guide | sonar documentation
read morePosts
npm - Change default directory
要設定 npm 的預設目錄,只要透過 npm config 命令設定 prefix 為指定的位置即可。
npm config set prefix [Path] Link 03 - Fixing npm permissions | npm Documentation
read more