无法通过sqldatareader检索数据

时间:2017-06-03 12:24:57

标签: c# sql entity-framework sqldatareader

我想从sql数据库中检索数据,并根据我提供的值将数据设置为某些文本框。就像,如果我提供一个名称“John”,它应该获取针对john的所有数据并将其放在文本框中。代码如下

string query = "SELECT * FROM PatientInfo WHERE Name LIKE '@Name';";
using (SqlConnection cn = new SqlConnection(constr))
using (SqlCommand cmd = new SqlCommand(query, cn))
   {
       cn.Open();
       cmd.Parameters.AddWithValue("@Name",String.Format("%{0}%", txtsearchpatient.Text));
       SqlDataReader reader = cmd.ExecuteReader();
       if (reader.HasRows)
        {
            while (reader.Read())
            {
                txtid_search.Text = reader["PatientID"].ToString();
                txtname_search.Text = reader["Name"].ToString();
                txtphone_search.Text = reader["Phone"].ToString();
                txtage_search.Text = reader["Age"].ToString();
                txtaddress_search.Text = reader["Address"].ToString();
                txtemail_search.Text = reader["Email"].ToString();
            }
         }
        else
        {
            MessageBox.Show("No record found");
        }
        reader.Close();
        cn.Close();
   }

我收到错误“无数据存在时读取无效”当我在sql management studio中使用相同查询手动执行查询时,它正在成功返回所有字段。问题在哪里?

1 个答案:

答案 0 :(得分:2)

在SQL字符串中,您使用了'@Name',它是标量字符串值"@Name",而不是预期的@Name参数。

只需删除@Name周围的单引号,问题就会解决。