C# 在C中的等于运算符中,数据类型text和varchar不兼容
我试图从employeeTable访问数据empname,但我编写的代码显示以下错误: “等于”运算符中的数据类型text和varchar不兼容 请提出解决办法C# 在C中的等于运算符中,数据类型text和varchar不兼容,c#,C#,我试图从employeeTable访问数据empname,但我编写的代码显示以下错误: “等于”运算符中的数据类型text和varchar不兼容 请提出解决办法 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { string Connection = "Data Source=(local);Initial catalog=Test;Integrated Security=true";
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 + "' ;";
始终使用
如果目标字符串大小不足以表示XML实例,请尝试使用VARCHARMAX
CONVERT(VARCHAR(MAX), empname)
苏尔菲·阿夫里迪
您可以使用强制转换而不是转换,如下所示:
将表达式强制转换为数据类型[长度]
因此,解决方案将是:
从EmployeeTable中选择*,其中Castvarchar,empname='@combobox'xulfi afridi,实际上代码应该是:
从EmployeeTable中选择*,其中Castempname为varcharmax=@combobox在哪一行出现此错误?并使用参数化查询。这种字符串连接对SQL注入攻击是开放的。EmployeeTable.empname的类型是什么?哪一行给出了错误?另外,学习使用参数化查询。也没有理由创建临时变量来保存查询结果。当我在组合框中选择empname时,它会显示错误消息。使用LIKE而不使用通配符也可以吗?
CONVERT(VARCHAR(MAX), empname)