我想从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中使用相同查询手动执行查询时,它正在成功返回所有字段。问题在哪里?
答案 0 :(得分:2)
在SQL字符串中,您使用了'@Name'
,它是标量字符串值"@Name"
,而不是预期的@Name
参数。
只需删除@Name
周围的单引号,问题就会解决。