C# 使用SQL语句在C中绑定结果

C# 使用SQL语句在C中绑定结果,c#,sql,prepared-statement,C#,Sql,Prepared Statement,使用此选项: 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 BusinessNa

使用此选项:

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?
如何将准备好的语句的结果绑定到变量,以便对其进行操作?

请尝试以下操作:

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命令的参数 调用命令上的ExecuteReader以检索允许您读取返回结果集的对象。 试着这样做:

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命令的参数 调用命令上的ExecuteReader以检索允许您读取返回结果集的对象。
为什么不使用存储过程?为什么不使用存储过程?不喜欢.AddWithValue,但在其他方面做得不错,建议使用blocks、.CreateCommand,当然还有实际调用Execute__;函数。如何使用DbDataReader?是否需要包含一个名称空间才能使用该名称空间?@DanKanze,当然,它是System.Data.Common名称空间。我包含了它,但我一直没有得到从对象类型System.Data.SqlClient.SqlParameter到已知托管提供程序本机类型的映射。使用DbDataReader=myCommand时挂断。ExecuteReader@DanKanze,尝试使用SqlDataReader而不是DbDataReader。我已经更新了我的答案。我不喜欢.AddWithValue,但在其他方面做得很好,建议使用blocks、.CreateCommand,当然还实际调用了Execute__;函数。我如何使用DbDataReader?是否需要包含一个名称空间才能使用该名称空间?@DanKanze,当然,它是System.Data.Common名称空间。我包含了它,但我一直没有得到从对象类型System.Data.SqlClient.SqlParameter到已知托管提供程序本机类型的映射。使用DbDataReader=myCommand时挂断。ExecuteReader@DanKanze,尝试使用SqlDataReader而不是DbDataReader。我已经更新了我的答案。