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

C# 我的逻辑正确吗?我正在尝试从数据库中进行简单的搜索,c#,sql,winforms,visual-studio-2010,ado.net,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

这是我的搜索功能代码

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时,转换失败。已停留数小时,我无法解决此问题。

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

string strPatient = "SELECT * FROM PATIENT WHERE patientID= (" +  strRFID+")" ;
问题1:您没有提供命令对象文本。 解决方案1:需要使用CommandText属性提供命令对象文本

试试这个:

string strPatient = "SELECT * FROM PATIENT WHERE patientID IN ("+cmdRFID.CommandText+")";
解决方案2:如果要执行正确的搜索,请使用关键字LIKE而不是equals=运算符,并在第一次查询中的搜索文本前后使用%symbol

完整代码:


现在它给了我一个错误:必须声明标量变量@rfidSearchChit说这里必须声明标量变量@rfidSearchAdd@rfidSearch参数给cmdPatient
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+")";