2012-02-11 45 views
1

使用此:使用SQL C#綁定結果準備語句

SqlConnection myConnection = new SqlConnection("Data Source=.\\SERVER;Initial Catalog=DB;Integrated Security=True;TrustServerCertificate=True;User Instance=False"); 
myConnection.Open(); 

SqlCommand myCommand = new SqlCommand("SELECT BusinessName FROM Businessess WHERE BusinessID = @Param2", myConnection); 

SqlParameter myParam2 = new SqlParameter("@Param2", SqlDbType.Int, 4); 
myParam2.Value = 1; 
myCommand.Parameters.Add(myParam2); 

MessageBox.Show(myCommand); //How do I bind results to show as string? 

如何準備語句的結果綁定到一個變量,這樣我可以操縱他們?

+1

你爲什麼不使用存儲過程? – 2012-02-11 15:19:44

回答

6

嘗試這樣的:

using (SqlConnection myConnection = new SqlConnection("Data Source=.\\SERVER;Initial Catalog=DB;Integrated Security=True;TrustServerCertificate=True;User Instance=False")) 
using (SqlCommand myCommand = myConnection.CreateCommand()) 
{ 
    myConnection.Open(); 
    myCommand.CommandText = "SELECT BusinessName FROM Businessess WHERE BusinessID = @Param2"; 
    myCommand.Parameters.AddWithValue("@Param2", myParam2); 
    using (SqlDataReader reader = myCommand.ExecuteReader()) 
    { 
     if (reader.Read()) 
     { 
      string businessName = reader.GetString(reader.GetOrdinal("BusinessName")); 
      MessageBox.Show(businessName); 
     } 
     else 
     { 
      MessageBox.Show(string.Format("Sorry, no business found with id = {0}", myParam2)); 
     } 
    } 
} 

事情需要注意:

  • 一次性資源被包裹在using語句,以確保適當的處置,即使在異常
  • 簡化參數傳遞給的情況下, SQL命令
  • 調用,以便檢索對象允許您閱讀RET的ExecuteReader上的命令urned結果集。
+0

不是.AddWithValue()的粉絲,但是在其他方面很好,建議使用塊,.CreateCommand(),當然實際上調用一個Execute __()函數。 – 2012-02-11 15:23:02

+0

如何使用DbDataReader閱讀器?我需要包含一個名稱空間來使用它嗎? – 2012-02-11 15:28:34

+0

@DanKanze,當然是'System.Data.Common'命名空間。 – 2012-02-11 15:29:49