执行SQL查询语句时报错:数据类型 ntext 和 varchar 在 equal to 运算符中不兼容
StringBuilder strSql = new StringBuilder();
strSql.Append("select top 1 ValId,DocId,ParaValue,CreateUser,CreateTime,UpdateUser,UpdateTime,ChangeFlag from TAB_VALUE ");
strSql.Append(" where DocId=@DocId and ParaValue=@ParaValue");
SqlParameter[] parameters = {
new SqlParameter("@DocId", SqlDbType.Int)
new SqlParameter("@ParaValue", SqlDbType.Ntext)
};
parameters[0].Value = DocId;
parameters[1].Value = ParaValue;
TAB_VALUE表中的ParaValue字段是Ntext类型
解决方案:把where条件修改成:where DocId=@DocId and convert(nvarchar(255),ParaValue)='" + ParaValue + "'
解析:不管是ntext还是nvarchar,实体类中的影射都应该是string,因为C#只有string是用来表示字符串的,不过这两个数据类型在数据库中是完全不同的,所以无法在他们之间进行比较操作