c# 数据类型 ntext 和 varchar 在 equal to 运算符中不兼容

执行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是用来表示字符串的,不过这两个数据类型在数据库中是完全不同的,所以无法在他们之间进行比较操作

c# 数据类型 ntext 和 varchar 在 equal to 运算符中不兼容

上一篇:asp.net core web api 输出的 json 中文被编码(乱码)的问题


下一篇:百度地图坐标转换