string s = "Davolio";
string sql = "SELECT * FROM Employees WHERE LastName = '" + s + "'";
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();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_GetEmployeeByName";
cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 20).Value = s;
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)。