我得到了这个错误:
String was not recognized as a valid Boolean.Couldn't store <No> in meetsstd Column. Expected type is Boolean当我运行此查询时:
SELECT * FROM work_nylustis_2013_q3.nylustis_details WHERE siteid = 'NYLUSTIS-155718' LIMIT 50从下面的代码:
Adapter.SelectCommand = New NpgsqlCommand(SQL, MLConnect)
Adapter.Fill(subDT) ' This line throws errormeetsstd字段是一个varchar(3),它确实存储了'Yes‘或'No’值。这怎么会与布尔值混淆-- varchar不应该关心is是“Yes”,还是“Si”,还是“Oui”?而且它只发生在表中28,000条记录中的27条记录上。
我通常将这种奇怪归咎于npgsql,但堆栈跟踪中的最后一项是: System.Data.DataColumn.set_Item(Int32记录,对象值)
有什么线索吗?
谢谢!布拉德
发布于 2013-09-10 20:40:12
要检查是数据库问题还是驱动程序问题,您可以使用当前环境将问题减少到一行和一列:
SELECT meetsstd FROM work_nylustis_2013_q3.nylustis_details WHERE sitenum=1(当然你必须把sitenum改成主键)
然后使用psql、pgAdmin或一些基于JDBC/ODBC的通用编辑器尝试这样的查询。
如果psql显示这样的记录,这会在基于Npgsql的应用程序中引发错误,那么问题出在Npgsql驱动程序或显示查询结果方面。
如果其他工具显示这种奇怪的错误,那么问题出在您的数据上。
您是否更改了meetsstd字段的类型?你是否可以尝试在一些网格上显示它,这个网格使用了转换为Yes/No的布尔值字段来显示?
https://stackoverflow.com/questions/18669263
复制相似问题