Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中的等于运算符中,数据类型text和varchar不兼容_C# - Fatal编程技术网

C# 在C中的等于运算符中,数据类型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";

我试图从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 + "' ;";
始终使用


如果目标字符串大小不足以表示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)