iT邦幫忙

1

[鼠年全馬鐵人挑戰] Week03 - Dapper用法筆記 part2

  • 分享至 

  • xImage
  •  

上週把強大的Dapper裡面最常用到的查詢寫完, 今天要來把剩下的紀錄完畢

好快


增刪改

一樣先來新舊對照, 增刪改使用OleDb的寫法跟查詢差不多, 一些必要的設定都要寫完整

// 宣告連線字串
private string connstr = WebConfigurationManager.ConnectionStrings["oracledbconn"].ConnectionString;
// 宣告OleDb連線 並帶入連線字串
OleDbConnection oleDbConnection = new OleDbConnection(connstr);
// 宣告OleDb命令集
OleDbCommand oleDbCommand = new OleDbCommand();
oleDbCommand.CommandType = CommandType.Text; 
oleDbCommand.CommandText = "INSERT INTO Employees (EmpID, EmpName) VALUES (:EmpID, :EmpName)";  // 設定SQL字串 (刪除修改在程式碼上都一樣, 把SQL語法替換就好)
oleDbCommand.Parameters.AddWithValue("EmpID", empid);
oleDbCommand.Parameters.AddWithValue("EmpName", empname);
oleDbCommand.Connection = oleDbConnection;  // 設定連線
// 開始對資料庫存取 並將資料新增到資料表
oleDbConnection.Open();
int result = oleDbCommand.ExecuteNonQuery();
oleDbConnection.Close();

雖然比起查詢少了很多行, 但用了一堆的類別(class)一樣看了就頭痛阿/images/emoticon/emoticon46.gif

再來看看強大的Dapper的寫法, 跟查詢時大同小異

using (OleDbConnection oleDbConnection = new OleDbConnection(connstr))
{
    string querystr = "INSERT INTO Employees (EmpID, EmpName) VALUES (:EmpID, :EmpName)";
    int result = oleDbConnection.Execute(querystr, new { 
        EmpID = empid, 
        EmpName = empname 
    });
}

https://ithelp.ithome.com.tw/upload/images/20200219/20118686esd4PUr6o5.png

以上是開發時最常使用的存取資料庫方法, 只要會增刪改查就很夠用了, 比較深入一點會使用到對Stored Procedure的呼叫等等, 有遇到再來研究吧~


除錯(Debug)

基本上Dapper在增刪改查的動作要除錯時, 只要程式語法沒下錯, 就只要注意兩個地方:

  • 資料庫連線時(XXXDbConnection)
  • 執行SQL語法時(Query或Execute)

最常遇到就是這兩個
如果抓到資料庫連線有問題, 有50趴機率是自己手殘把連線字串寫錯, 另外50趴是對資料庫連線失敗
如果抓到是執行SQL有問題, 那100趴保證是自己手殘, 不是SQL寫錯就是參數沒帶
/images/emoticon/emoticon01.gif/images/emoticon/emoticon01.gif/images/emoticon/emoticon01.gif

以上是除錯經驗談xD


再來來談談Dapper的優缺點

優點

優點的部分, 基本上在上一篇有談到就是維基百科:Dapper_ORM上面的特色
其他我自己認為的優點就是 完美

缺點

不嘴砲, 真的很好用, 不相信的趕快去用看看


這禮拜感覺篇幅有點少R, 最後來預告一下順便衝字數
下一篇一樣是來紀錄開發上有在使用的套件, 前端的表格套件DataTables
敬請期待/images/emoticon/emoticon29.gif


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言