2017-06-03 80 views
0

我想從sql數據庫中檢索數據,並根據我提供的值將該數據設置爲某些文本框。就像,如果我提供了一個名字「約翰」,它應該獲取所有的數據反對約翰,並把它放在文本框。代碼如下無法通過sqldatareader檢索數據

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

'LIKE'@ Name''應該是'LIKE @ Name' –

+0

它的工作原理:O當我這樣做時,它說「必須聲明標量變量名」,但現在它工作。非常感謝 。請張貼您的回覆,以便我可以將其標記爲答案。 – SidraM

回答

2

在你使用的SQL字符串中你使用了'@Name'這是標量字符串值"@Name"而不是預期的@Name參數。

只需刪除圍繞@Name的單引號,問題就會解決。