C# 从SQL Server中的表中选择数据时出错

C# 从SQL Server中的表中选择数据时出错,c#,sql,sql-server,sql-server-2008,C#,Sql,Sql Server,Sql Server 2008,我使用此代码从SQL Server 2008中的表中选择: sqlcomm.CommandText = "select [objId] from [tablename] where href = @href" 我的表格中的href类型是ntext,我使用此代码选择: sqlcomm.Parameters.Add("@href", SqlDbType.NVarChar); sqlcomm.Parameters["@href"].Value = 'somestring'; IDataRead

我使用此代码从SQL Server 2008中的表中选择:

sqlcomm.CommandText = "select [objId] from [tablename] where href = @href"
我的表格中的
href
类型是
ntext
,我使用此代码选择:

 sqlcomm.Parameters.Add("@href", SqlDbType.NVarChar);
 sqlcomm.Parameters["@href"].Value = 'somestring';
 IDataReader reader = sqlcomm.ExecuteReader();
但这是一个错误:

数据类型ntext和varchar在等于运算符中不兼容

当我使用
SqlDbType.NText
时,它有相同的错误。我无法更改表中
href
列的类型。当我使用
like@href
时,它可以工作,但我不能使用
like
,因为我想精确匹配


我怎样才能解决我的问题呢?

错误就在上面。不能将NTEXT列与NVarchar参数进行比较

sqlcomm.CommandText="select [objId] from [tablename] where cast(href as nvarchar(max))=@href"

已经有一段时间不推荐了。请尽快将它们转换为n/varchar(max)和varbinary(max)。

在SQL的where子句中不能使用ntext列。如果您无法更改现有的列类型,例如CAST(href AS nvarchar(max)),我建议您转换SQL语句中的列

HREF的参数类型是NVarChar?这应该与基础类型匹配。您可以对
ntext
使用
LIKE
。只是不要包含任何通配符。但这并不重要,因为该列无论如何都无法编制索引。