数据类型text和varchar在equal运算符中不兼容

时间:2014-01-21 09:47:21

标签: c# sql-server-2008

我使用text作为设备名称的数据类型。在将数据添加到表单中时,会引发错误:数据类型text和varchar在等于运算符中不兼容

try
{
    cmd = new SqlCommand("insert into license1 values(@l_id,@customer_id,@d_id,@device_name,@from,@to)", cn);

    cmd.Parameters.AddWithValue("@l_id", license_id.Text);
    cmd.Parameters.AddWithValue("@customer_id", c_comboBox4.Text);
    cmd.Parameters.AddWithValue("@d_id", d_id_comboBox4.Text);
    cmd.Parameters.AddWithValue("@device_name", d_name_comboBox5.Text);
    cmd.Parameters.AddWithValue("@to", DateTime.Parse(date_to.Text));
    cmd.Parameters.AddWithValue("@from", DateTime.Parse(date_from.Text));

    cn.Open();
    a = cmd.ExecuteNonQuery();
    if (a > 0)
    {
        MessageBox.Show("Data Submitted");
    }
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

2 个答案:

答案 0 :(得分:1)

我会尝试更改此行

cmd.Parameters.Add("@device_name", SqlDbType.Text).Value = d_name_comboBox5.Text;

AddWithValue将字符串值视为NVarChar数据类型,并查看错误消息,预期为Text类型。

您还可以尝试将列数据类型更改为nvarchar(MAX)。 TEXT列被认为已过时,将probably removed in future versions of Sql Server

答案 1 :(得分:0)

尝试将device_name列的数据类型更改为varchar并重新测试您的应用