2012-02-11 49 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