C#ExecuteReader不在ASP.Net中返回SQL查询数据

时间:2017-02-13 16:00:45

标签: c# sql asp.net

我无法从以下查询中提取我需要的SQL数据。我查看了MSDN并按照他们的示例,但由于某种原因,执行读取器没有读取数据并在单击按钮后将其返回到文本框。我添加了一个响应以确保连接打开,并且每次都按下它。这是代码的摘录,我从这里省略的唯一内容是sqlconnection细节:

protected void Button1_Click(object sender, EventArgs e)
{
        using (SqlConnection conn = new SqlConnection(ConnectionString))
        {

            //set up the SQL command       
            SqlCommand command = new SqlCommand("Use Waste_Test; select * from Bidston_HWRC where MCN_No = @MCN", conn);

            //open the server connection
            conn.Open();

            //define parameter for SQL query
            command.Parameters.Add("@MCN", SqlDbType.Int);
            command.Parameters["@MCN"].Value = TextBox17.Text;

            Response.Write("<script>alert('You are connected')</script>");


            //Execute the query on the server
            SqlDataReader rdr = command.ExecuteReader();

            Response.Write("<script>alert('It's worked')</script>");

            while (rdr.Read())
            {
                TextBox6.Text = rdr["Waste_Description"].ToString();
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

首先,您需要使用HasRows以确保查询返回一些结果,如果没有记录返回,则可以在标签中显示消息。由于您从文本框中获取MCN值,因此需要将其解析为int。请尝试以下代码。

protected void Button1_Click(object sender, EventArgs e)
{
    using (SqlConnection conn = new SqlConnection(ConnectionString))
    {     
            SqlCommand command = new SqlCommand("select * from Bidston_HWRC where MCN_No = @MCN", conn);
            conn.Open();
            Command.Parameters.AddWithValue("@MCN", Int32.Parse(TextBox17.Text));
            //Execute the query on the server
            SqlDataReader rdr = command.ExecuteReader();



        if(rdr.HasRows)
        {
            while (rdr.Read())
            {
              TextBox6.Text = rdr["Waste_Description"].ToString();
            }

        }
        else
        {
          // show 'no records found'
        }
       rdr.Close();
       conn.Close();
    }
}