关于用DataTable.Select()方法出现“无法在 System.String 和 System.Int32 上执行“=”操作。”错误的原因

来源:互联网 发布:图像尺寸测量软件 编辑:程序博客网 时间:2024/06/07 13:01

错误代码如下:


      DataRow[] drxm = dtXSHDList[2].Select("yxsh='" + dtXSHDList[0].Rows[row1]["xsbh"].ToString() + "'" + " and zydm= " + dtzy.Rows[row2]["zydm"].ToString());



刚开始百思不得其解,因为zydm是varchar类型,而右边也.ToString()了,哪来的Int?后来网上看了一下,说DataTable.Select()会自动转化类型。zydm虽然是varchar,但是基本上都是数字组成的,于是我怀疑zydm字段被转化成了int,遂有了:


DataRow[] drxm = dtXSHDList[2].Select("yxsh='" + dtXSHDList[0].Rows[row1]["xsbh"].ToString() + "'" + " and convert(zydm,'System.String')= " + dtzy.Rows[row2]["zydm"].ToString());


然并卵。


这时候看了 System.String 和 System.Int32的位置,应该还是后面的错误。然后想到sql语句里面非int类型要加单引号。


于是:


 DataRow[] drxm = dtXSHDList[2].Select("yxsh='" + dtXSHDList[0].Rows[row1]["xsbh"].ToString() + "'" + " and zydm='" + dtzy.Rows[row2]["zydm"].ToString() + "'");


问题解决。

0 0