1. 程式人生 > >C# Dapper 基本使用 增刪改查事務等

C# Dapper 基本使用 增刪改查事務等

  1 using DapperTest.Models;
  2 using System.Collections.Generic;
  3 using System.Web.Http;
  4 using Dapper;
  5 using System.Data;
  6 using System.Data.SqlClient;
  7 using System.Linq;
  8 using System.Configuration;
  9  
 10 namespace DapperTest.Controllers
 11 {
 12     public class HomeController : ApiController
13 { 14 #region 查詢 15 16 /// <summary> 17 /// 查詢所有資料 18 /// </summary> 19 /// <returns></returns> 20 [HttpGet] 21 public IHttpActionResult GetStudentList() 22 { 23 string conStr = ConfigurationManager.AppSettings["
SqlConnStr"]; 24 string sql = @"SELECT * FROM STUDENT"; 25 using (IDbConnection conn = new SqlConnection(conStr)) 26 { 27 var result = conn.Query<StudentInfo>(sql).ToList(); 28 return Ok(ReturnJsonResult.GetJsonResult(RequestResult.請求成功, result));
29 } 30 } 31 32 /// <summary> 33 /// 查詢指定ID單條資料(帶引數) 34 /// </summary> 35 /// <returns></returns> 36 [HttpGet] 37 public IHttpActionResult GetStudentInfo(string ID) 38 { 39 string conStr = ConfigurationManager.AppSettings["SqlConnStr"]; 40 string sql = @"SELECT * FROM STUDENT WHERE STUID in @STUID"; 41 using (IDbConnection conn = new SqlConnection(conStr)) 42 { 43 var result = conn.Query<StudentInfo>(sql, new { STUID = ID }); 44 return Ok(ReturnJsonResult.GetJsonResult(RequestResult.請求成功, result)); 45 } 46 } 47 48 /// <summary> 49 /// IN查詢 50 /// </summary> 51 /// <returns></returns> 52 [HttpGet] 53 public IHttpActionResult GetStudentInfos(string IDStr) 54 { 55 string conStr = ConfigurationManager.AppSettings["SqlConnStr"]; 56 string sql = @"SELECT * FROM STUDENT WHERE STUID in @STUIDStr"; 57 var IDArr = IDStr.Split(','); 58 using (IDbConnection conn = new SqlConnection(conStr)) 59 { 60 var result = conn.Query<StudentInfo>(sql, new { STUIDStr = IDArr }); 61 return Ok(ReturnJsonResult.GetJsonResult(RequestResult.請求成功, result)); 62 } 63 } 64 65 /// <summary> 66 /// 兩表聯合查詢 67 /// </summary> 68 /// <returns></returns> 69 [HttpGet] 70 public IHttpActionResult GetStudentAndClass() 71 { 72 string conStr = ConfigurationManager.AppSettings["SqlConnStr"]; 73 string sql = @"SELECT * FROM STUDENT A JOIN CLASS B ON A.FK_CLASSID = B.ID"; 74 using (IDbConnection conn = new SqlConnection(conStr)) 75 { 76 var result = conn.Query(sql); 77 return Ok(ReturnJsonResult.GetJsonResult(RequestResult.請求成功, result)); 78 } 79 } 80 81 #endregion 82 83 #region 新增 84 85 86 /// <summary> 87 /// 插入單條資料(帶引數) 88 /// </summary> 89 /// <returns></returns> 90 [HttpPost] 91 public IHttpActionResult AddStudent() 92 { 93 string conStr = ConfigurationManager.AppSettings["SqlConnStr"]; 94 string sql = @"INSERT INTO STUDENT (NAME,AGE,FK_CLASSID) VALUES (@NAME,@AGE,@CLASSID)"; 95 96 StudentInfo student = new StudentInfo 97 { 98 Name = "恩格斯", 99 Age = 55, 100 FK_ClassID = 1 101 }; 102 103 using (IDbConnection conn = new SqlConnection(conStr)) 104 { 105 var result = conn.Execute(sql, new { NAME = student.Name, AGE = student.Age, CLASSID = student.FK_ClassID }); 106 return Ok(ReturnJsonResult.GetJsonResult(RequestResult.請求成功, result)); 107 } 108 } 109 110 111 /// <summary> 112 /// 插入單條資料(直接插入整個實體) 113 /// </summary> 114 /// <returns></returns> 115 [HttpPost] 116 public IHttpActionResult AddStudentInfo() 117 { 118 string conStr = ConfigurationManager.AppSettings["SqlConnStr"]; 119 string sql = @"INSERT INTO STUDENT (NAME,AGE,FK_CLASSID) VALUES (@NAME,@AGE,@FK_CLASSID)"; 120 121 StudentInfo student = new StudentInfo 122 { 123 Name = "馬克思", 124 Age = 55, 125 FK_ClassID = 1 126 }; 127 128 using (IDbConnection conn = new SqlConnection(conStr)) 129 { 130 var result = conn.Execute(sql, student); 131 return Ok(ReturnJsonResult.GetJsonResult(RequestResult.請求成功, result)); 132 } 133 } 134 135 /// <summary> 136 /// 插入多條資料(實體) 137 /// </summary> 138 /// <returns></returns> 139 [HttpPost] 140 public IHttpActionResult AddStudentList() 141 { 142 string conStr = ConfigurationManager.AppSettings["SqlConnStr"]; 143 string sql = @"INSERT INTO STUDENT (NAME,AGE,FK_CLASSID) VALUES (@NAME,@AGE,@FK_CLASSID)"; 144 145 List<StudentInfo> list = new List<StudentInfo>(); 146 for (int i = 0; i < 3; i++) 147 { 148 StudentInfo student = new StudentInfo 149 { 150 Name = "強森" + i.ToString(), 151 Age = 55, 152 FK_ClassID = 1 153 }; 154 list.Add(student); 155 } 156 157 using (IDbConnection conn = new SqlConnection(conStr)) 158 { 159 var result = conn.Execute(sql, list); 160 return Ok(ReturnJsonResult.GetJsonResult(RequestResult.請求成功, result)); 161 } 162 } 163 164 /// <summary> 165 /// 插入資料後返回自增主鍵 166 /// </summary> 167 /// <returns></returns> 168 [HttpPost] 169 public IHttpActionResult AddReturnID() 170 { 171 string conStr = ConfigurationManager.AppSettings["SqlConnStr"]; 172 string sql = @"INSERT INTO STUDENT (NAME,AGE,FK_CLASSID) VALUES (@NAME,@AGE,@CLASSID)"; 173 174 StudentInfo student = new StudentInfo 175 { 176 Name = "恩格斯", 177 Age = 55, 178 FK_ClassID = 1 179 }; 180 181 using (IDbConnection conn = new SqlConnection(conStr)) 182 { 183 sql += "SELECT SCOPE_IDENTITY()"; 184 var result = conn.Execute(sql, new { NAME = student.Name, AGE = student.Age, CLASSID = student.FK_ClassID }); 185 var id = conn.QueryFirstOrDefault<int>(sql, new { NAME = student.Name, AGE = student.Age, CLASSID = student.FK_ClassID }); 186 return Ok(ReturnJsonResult.GetJsonResult(RequestResult.請求成功, id)); 187 } 188 } 189 #endregion 190 191 #region 更新 192 /// <summary> 193 /// 使用實體更新 194 /// </summary> 195 /// <returns></returns> 196 [HttpPost] 197 public IHttpActionResult UpdateStudetInfo() 198 { 199 string conStr = ConfigurationManager.AppSettings["SqlConnStr"]; 200 string sql = @"UPDATE STUDENT SET [email protected],[email protected],[email protected]_CLASSID WHERE STUID = @StuID"; 201 StudentInfo student = new StudentInfo 202 { 203 StuID = 1, 204 Name = "老夫子", 205 Age = 59, 206 FK_ClassID = 2 207 }; 208 using (IDbConnection conn = new SqlConnection(conStr)) 209 { 210 var result = conn.Execute(sql, student); 211 return Ok(ReturnJsonResult.GetJsonResult(RequestResult.請求成功, result)); 212 } 213 } 214 215 /// <summary> 216 /// 引數更新 217 /// </summary> 218 /// <returns></returns> 219 [HttpPost] 220 public IHttpActionResult UpdateStudet(int ID) 221 { 222 string conStr = ConfigurationManager.AppSettings["SqlConnStr"]; 223 string sql = @"UPDATE STUDENT SET [email protected],[email protected],[email protected]_CLASSID WHERE STUID = @StuID"; 224 using (IDbConnection conn = new SqlConnection(conStr)) 225 { 226 var result = conn.Execute(sql, new {NAME = "尼古拉斯趙四",AGE = 1,StuID = ID}); 227 return Ok(ReturnJsonResult.GetJsonResult(RequestResult.請求成功, result)); 228 } 229 } 230 #endregion 231 232 #region 刪除 233 public IHttpActionResult Delete(int ID) 234 { 235 string conStr = ConfigurationManager.AppSettings["SqlConnStr"]; 236 string sql = @"DELETE STUDENT WHERE STUID = @StuID"; 237 using (IDbConnection conn = new SqlConnection(conStr)) 238 { 239 var result = conn.Execute(sql, new { StuID = ID }); 240 return Ok(ReturnJsonResult.GetJsonResult(RequestResult.請求成功, result)); 241 } 242 } 243 #endregion 244 245 #region 事務 246 [HttpPost] 247 public IHttpActionResult AddStudentT() 248 { 249 string conStr = ConfigurationManager.AppSettings["SqlConnStr"]; 250 string sql = @"INSERT INTO STUDENT (NAME,AGE,FK_CLASSID) VALUES (@NAME,@AGE,@CLASSID)"; 251 252 StudentInfo student = new StudentInfo 253 { 254 Name = "恩格斯", 255 Age = 55, 256 FK_ClassID = 1 257 }; 258 259 StudentInfo student2 = new StudentInfo 260 { 261 Name = "恩格斯2", 262 Age = 55, 263 FK_ClassID = 1 264 }; 265 266 try 267 { 268 using (IDbConnection conn = new SqlConnection(conStr)) 269 { 270 IDbTransaction transaction = conn.BeginTransaction(); 271 var result = conn.Execute(sql, student); 272 var result1 = conn.Execute(sql, student2); 273 transaction.Commit(); 274 return Ok(ReturnJsonResult.GetJsonResult(RequestResult.請求成功, result)); 275 } 276 } 277 catch (System.Exception) 278 { 279 throw; 280 } 281 282 } 283 #endregion 284 } 285 }