我收到此错误:
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 error
meetstd字段是varchar(3),它存储“是”或“否”值。如何将这与布尔值混淆 - varchar不应该关心是否保持'是','Si'或'Oui'?它只发生在表中28,000个记录中的27个记录中。
我经常责备npgsql这种奇怪,但堆栈跟踪中的最后一个条目是:System.Data.DataColumn.set_Item(Int32 record,Object value)
任何线索?
谢谢! 布拉德
答案 0 :(得分:1)
要检查数据库或驱动程序是否有问题,您可以使用当前环境将问题减少到一行和一列:
SELECT meetsstd FROM work_nylustis_2013_q3.nylustis_details WHERE sitenum=1
(当然您必须将sitenum
更改为主键)
然后使用psql
,pgAdmin
或某些基于JDBC / ODBC的通用编辑器尝试此类查询。
如果psql
显示这样的记录会导致基于Npgsql的应用程序出错,则问题在于Npgsql驱动程序,或者问题在于显示查询结果。
如果其他工具显示出如此奇怪的错误,那么您的数据就会出现问题。
您是否更改了meetsstd
字段的类型? Mayby你试图在某个网格上显示它,这个网格使用了布尔字段,该字段已转换为Yes/No
进行显示?