这是我的搜索功能代码
string strRFID = "SELECT patientID FROM RFID WHERE rfidentification=@rfidSearch";
SqlCommand cmdRFID = new SqlCommand(strRFID, connection);
cmdRFID.Parameters.AddWithValue("@rfidSearch", txtRFID.Text);
string strPatient = "SELECT * FROM PATIENT WHERE patientID=" + "'" + strRFID + "'";
SqlCommand cmdPatient = new SqlCommand(strPatient, connection);
connection.Open();
SqlDataReader readRFID = cmdRFID.ExecuteReader();
readRFID.Close();
SqlDataReader readPatient = cmdPatient.ExecuteReader();
if (readPatient.Read())
{
txtFirstName.Text = readPatient["pFirstName"].ToString();
}
else
{
MessageBox.Show("No record found");
}
readPatient.Close();
connection.Close();
我一直收到此错误消息:“将varchar值'SELECT patientID FROM RFID WHERE rfidentification = @ rfidSearch'转换为数据类型int时转换失败。”被困了几个小时,我无法弄清楚
答案 0 :(得分:0)
问题是您将子查询附加为字符串值。删除单引号
string strPatient = "SELECT * FROM PATIENT WHERE patientID= (" + strRFID+")" ;
答案 1 :(得分:0)
问题1:您没有提供Command对象文本
解决方案1:您需要使用CommandText
属性
试试这个:
string strPatient = "SELECT * FROM PATIENT WHERE patientID IN ("+cmdRFID.CommandText+")";
解决方案2:如果您要进行正确的搜索,请使用关键字LIKE
代替等于=
运算符,并在使用前后使用%
符号在第一个查询中搜索文本。
完整代码:
string strRFID = "SELECT patientID FROM RFID WHERE rfidentification like @rfidSearch";
SqlCommand cmdRFID = new SqlCommand(strRFID, connection);
cmdRFID.Parameters.AddWithValue("@rfidSearch", "%"+ txtRFID.Text+ "%");
string strPatient = "SELECT * FROM PATIENT WHERE patientID IN ("+cmdRFID.CommandText+")";