2009年5月2日

Linq To Sql Query Expressions by C#

最近利用Linq to Sql O/R 技術撰寫程式碼,紀錄查詢語法避免以後久不用又忘記。

有一個table Brand 包含三個欄位,欄位一廠牌代號(id),欄位二廠牌名稱(name),欄位三停用(isuse)。

查詢廠牌名稱含有"A"的SQL語法
select id, name, isuse from Brand where name like '%A%'

Linq 語法
db = new BaseDataDataContext();
var b = from s1 in db.Brand where s1.Name.Contains("A") select s1;


查詢廠牌名稱第一個字含有"A"的SQL語法
select id, name, isuse from Brand where name like 'A%'

Linq 語法
db = new BaseDataDataContext();
var b = from s1 in db.Brand where s1.Name.StartsWith("A") select s1;


查詢廠牌名稱最後一個字含有"A"的SQL語法
select id, name, isuse from Brand where name like '%A'

Linq 語法
db = new BaseDataDataContext();
var b = from s1 in db.Brand where s1.Name.EndsWith("A") select s1;


查詢結果只有廠牌名稱欄位的SQL語法
select name from Brand

Linq 語法
db = new BaseDataDataContext();
var b = from s1 in db.Brand select new {name=s1.Name};

2009年4月10日

SqLite.Net CRUD 參數語法 by C#

記錄使用 SQLite 的 ADO.NET 2.0 Provider 參數式寫法 by C#。

下面語法無效
dbCommand.Parameters.AddWithValue("@parameter", value);

下面語法才能成功傳遞參數
dbCommand.Parameters.Add(new SQLiteParameter("@parameter"));
dbCommand.Parameters["@parameter"].Value = value;


下面是一個 sample code
string SqlText = "Delete From Brand Where id=@id";
SQLiteCommand dbCmd = new SQLiteCommand(SqlText, _sCon);
dbCmd.Parameters.Add(new SQLiteParameter("@id"));
dbCmd.Parameters["@id"].Value = BrandID;
_sCon.Open();
dbCmd.ExecuteNonQuery();
_sCon.Close();

2009年3月3日

SQLite.NET Connection Strings

之前在網路上尋得 SQLite 的 ADO.NET 2.0 Provider,順便整理網路上查到的 SQLite Connection String 的資料。作為未來寫程式的參考資料。

最基本
Data Source=dbname;Version=3;
Data Source:資料庫檔案名稱
Version:版本

使用 UTF16 編碼
Data Source=dbname;Version=3;UseUTF16Encoding=True;
UseUTF16Encoding:True(啟用),False(關閉)

使用 Connection Pooling
Data Source=dbname;Version=3;Pooling=True;Max Pool Size=100;
Pooling:True(啟用),False(關閉)


範例
Data Source=C:\folder\dbname.db;Version=3;Compress=True

Excel 取得目前工作表名稱 by 程式

紀錄取得目前正在工作中工作表名稱 VBA 語法。
ActiveSheet.Name

ThisWorkbook.ActiveSheet.Name