【发布时间】:2012-06-07 09:36:01
【问题描述】:
我有一个简单的选择查询,但执行它给我一个错误:
数据类型 text 和 varchar 在等于运算符中不兼容
代码如下:
string query = String.Format("Select SupplierId from tbl_Supplier where SupplierName ='" + cmbSupplierName.Text +"'");
SqlCommand cmd = new SqlCommand(query, connection);
SqlDataReader sdr = cmd.ExecuteReader();
while (sdr.Read())
{
MessageBox.Show(sdr["SupplierId"].ToString());
}
SupplierName 的数据类型在数据库中是 TEXT。我不明白为什么它会给我varchar 的错误
【问题讨论】:
-
这是线索 ---> “文本和 varchar 不兼容”。他们不是。那就是问题所在。 “文本”不是它听起来的样子......
-
我正在查找我的查询中的问题。我很清楚它们不兼容
-
我猜用户可以输入文本框。通过像这样通过字符串连接创建 SQL 语句,您将面临性能和安全问题。请阅读 SQL 注入。正确的做法是将参数添加到您的
SqlCommand。 -
但要解决您的问题 - 尝试将
SupplierName列转换为 varchar(或 nvarchar)数据类型。 -
文本已被弃用,你不应该使用它 - msdn.microsoft.com/en-us/library/ms187993.aspx
标签: c# sql-server tsql exception-handling ado.net