2017年4月25日 星期二

【ADO.NET】Copy paste note

這篇只是用來貼常用到的一些 ADO.NET 語法

Adapter 寫 DataTable
  1. string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["key"].ConnectionString;
  2. using (SqlConnection sqlConn = new SqlConnection(connStr))
  3. {
  4. sqlConn.Open();
  5. using (SqlCommand cmd = new SqlCommand(queryStr, sqlConn))
  6. {
  7. cmd.Parameters.AddWithValue("paramX", variableX);
  8. cmd.Parameters.AddWithValue("paramY", variableY);
  9. cmd.Parameters.Add("@paramZ", SqlDbType.VarChar, 50).Value = "something";
  10. DataTable dt = new DataTable();
  11. using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
  12. {
  13. adapter.Fill(dt);
  14. }
  15. }
  16. }

DataReader
  1. using (SqlConnection sqlConn = new SqlConnection(connStr))
  2. {
  3. sqlConn.Open();
  4. using (SqlCommand cmd = new SqlCommand(queryStr, sqlConn))
  5. {
  6. cmd.Parameters.AddWithValue("paramsA", valA);
  7. using (SqlDataReader dr = cmd.ExecuteReader())
  8. {
  9. // while (dr.Read()) for loop
  10. if (dr.Read())
  11. {
  12. string cellValue = dr.GetString(dr.GetOrdinal("ColumnName"));
  13. string cellValue2 = dr["ColumnName2"].ToString();
  14. }
  15. }
  16. }
  17. }

Stored Procedure
  1. using (SqlConnection sqlConn = new SqlConnection(CONN_STR))
  2. {
  3. sqlConn.Open();
  4. using (SqlCommand cmd = new SqlCommand("usp_xyz", sqlConn))
  5. {
  6. cmd.CommandType = CommandType.StoredProcedure;
  7. cmd.Parameters.AddWithValue("x", x);
  8. DataTable dt = new DataTable();
  9. using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
  10. {
  11. adapter.Fill(dt);
  12. }
  13. }
  14. }

TransactionScope & Update
  1. using (TransactionScope scope = new TransactionScope())
  2. {
  3. string connStr = @"...";
  4. using (SqlConnection sqlConn = new SqlConnection(connStr))
  5. {
  6. sqlConn.Open();
  7. string queryStr = @"UPDATE Table SET ColC = @colC
  8. WHERE ColA = @colA AND ColB = @colB ";
  9. using (SqlCommand cmd = new SqlCommand(queryStr, sqlConn))
  10. {
  11. foreach (var item in items)
  12. {
  13. cmd.Parameters.Clear();
  14. cmd.Parameters.AddWithValue("colA", item.A);
  15. cmd.Parameters.AddWithValue("colB", item.B);
  16. cmd.Parameters.Add("colC", SqlDbType.BigInt).Value = item.C;
  17. cmd.Parameters.Add(new SqlParameter()
  18. {
  19. SqlDbType = SqlDbType.VarChar,
  20. Size = 18,
  21. ParameterName = "@colD",
  22. Value = item.D
  23. });
  24. int effectRowCount = cmd.ExecuteNonQuery();
  25. }
  26. }
  27. }
  28. scope.Complete();
  29. }

Connection string builder
  1. SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
  2. builder["Data Source"] = "ServerName";
  3. builder["Integrated Security"] = true;
  4. builder["Initial Catalog"] = "DbName";
  1. //Data Source=.;Initial Catalog=DbName;Integrated Security=True
  2. DataTable dt = new DataTable();
  3. using (SqlConnection sqlConn = new SqlConnection(builder.ConnectionString))
  4. {
  5. sqlConn.Open();
  6. using (SqlCommand cmd = new SqlCommand("SELECT TOP 1000 * FROM TheTable", sqlConn))
  7. {
  8. using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
  9. {
  10. adapter.Fill(dt);
  11. }
  12. }
  13. }

沒有留言:

張貼留言