数据类型 text 和 varchar 在 C# 中的等于运算符中不兼容
本文关键字:运算符 不兼容 text varchar 数据类型 | 更新日期: 2023-09-27 18:37:02
我正在尝试从 employeeTable 访问empname
的数据,但我编写的代码给了我以下错误:
数据类型 text 和 varchar 在等于运算符中不兼容。
请提出解决方案
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string Connection = "Data Source=(local);Initial catalog=Test;Integrated Security=true";
string Query = "SELECT * FROM EmployeeTable WHERE empname='" + comboBox1.Text + "' ;";
SqlConnection conn = new SqlConnection(Connection);
SqlCommand cmd = new SqlCommand(Query, conn);
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
textBoxEmpName.Text = reader["EmpName"].ToString();
}
}
您无法将文本与 varchar 进行比较,但作为将来遇到此问题的任何人的答案,只需将文本列转换为查询的 varchar 即可。
SELECT * FROM EmployeeTable WHERE CONVERT(VARCHAR, empname) = '" + comboBox1.Text + "' ;";
始终使用参数
SELECT * FROM EmployeeTable WHERE CONVERT(VARCHAR, empname) = @comboBox";
如果目标字符串大小不够大,无法表示 XML 实例,请尝试使用 VARCHAR(MAX)。
CONVERT(VARCHAR(MAX), empname)
xulfi afridi,实际上代码应该是:
从员工表中选择 *,其中 Cast(empname as varchar(max)) = @combobox
xulfi afridi,
您可以使用 CAST (https://learn.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql#syntax) 代替 CONVERT,如下所示:
强制转换(表达式为 data_type[(长度)]);
因此,解决方案将是:从员工表中选择*,其中 Cast(varchar,empname)='@combobox'