数据类型 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();
    }
}

数据类型 text 和 varchar 在 C# 中的等于运算符中不兼容

您无法将文本与 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'