首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

ASP.NET 操作 SQL Server 實用技巧:參數化查詢、多表填充 DataSet

     編輯:關於SqlServer

技巧一:參數傳遞三種寫法

1. 字串串接 (不推薦,有注入風險)

string s = "Davolio";
string sql = "SELECT * FROM Employees WHERE LastName = '" + s + "'";

2. Parameters.Add (推薦,防注入、計畫重用)

string s = "Davolio";
SqlConnection conn = new SqlConnection("Data Source=(local);Initial Catalog=Northwind;UID=sa;PWD=");
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT * FROM Employees WHERE LastName = @Name";
cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 20).Value = s;
// 或 cmd.Parameters.AddWithValue("@Name", s);
SqlDataReader dr = cmd.ExecuteReader();

3. 預存程序 (最佳封裝)

cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_GetEmployeeByName";
cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 20).Value = s;

技巧二:單一 DataSet 裝載多張表

SqlDataAdapter da1 = new SqlDataAdapter("SELECT * FROM Employees", conn);
SqlDataAdapter da2 = new SqlDataAdapter("SELECT * FROM Customers", conn);
DataSet ds = new DataSet();
da1.Fill(ds, "MyEmployees");   // 建立 DataTable "MyEmployees"
da2.Fill(ds, "MyCustomers");   // 建立 DataTable "MyCustomers"
da1.Dispose(); da2.Dispose();

string hireDate = ds.Tables["MyEmployees"].Rows[0]["HireDate"].ToString();
string contactTitle = ds.Tables["MyCustomers"].Rows[0]["ContactTitle"].ToString();

優點:一次連線取回多結果集,減少往返;DataTable 獨立命名空間,程式碼清晰。

最佳實務提醒

  • 永遠使用 using 區塊確保連線/命令/讀取器釋放。
  • 參數指定 SqlDbType 與長度,避免隱含轉換與計畫膨脹。
  • 大量資料用 SqlBulkCopy 或 Table-Valued Parameters (2008+)。
  • 連線字串放 web.config,啟用連線池 (Pooling=true)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved