我的逻辑是否正确?我正在尝试从数据库中进行简单的搜索

时间:2014-01-21 16:31:21

标签: c# sql winforms visual-studio-2010 ado.net

这是我的搜索功能代码

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时转换失败。”被困了几个小时,我无法弄清楚

2 个答案:

答案 0 :(得分:0)

问题是您将子查询附加为字符串值。删除单引号

string strPatient = "SELECT * FROM PATIENT WHERE patientID= (" +  strRFID+")" ;

答案 1 :(得分:0)

问题1:您没有提供Command对象文本 解决方案1:您需要使用CommandText属性

提供Command对象文本

试试这个:

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+")";