字符串未被识别为varchar列上的有效布尔错误

时间:2013-09-07 03:05:17

标签: vb.net postgresql ado.net odbc npgsql

我收到此错误:

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)

任何线索?

谢谢! 布拉德

1 个答案:

答案 0 :(得分:1)

要检查数据库或驱动程序是否有问题,您可以使用当前环境将问题减少到一行和一列:

SELECT meetsstd FROM work_nylustis_2013_q3.nylustis_details WHERE sitenum=1

(当然您必须将sitenum更改为主键)

然后使用psqlpgAdmin或某些基于JDBC / ODBC的通用编辑器尝试此类查询。

如果psql显示这样的记录会导致基于Npgsql的应用程序出错,则问题在于Npgsql驱动程序,或者问题在于显示查询结果。

如果其他工具显示出如此奇怪的错误,那么您的数据就会出现问题。

您是否更改了meetsstd字段的类型? Mayby你试图在某个网格上显示它,这个网格使用了布尔字段,该字段已转换为Yes/No进行显示?