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