我在PostgreSQL中有一个表,该表由数据类型列BIT组成。我只是使用select命令通过C#应用程序获取表的结果。
当我使用Npgsql版本3.1.10时,DataTable加载操作正常。
但是,如果我使用的是Npgsql版本3.2.0或更高版本,则DataTable加载将失败,并出现以下错误。
System.ArgumentException:'值的类型与列不匹配 类型无法存储在BitTable_bit_col列中。预期类型 是BitArray。'
下面是代码段。
NpgsqlConnection conn = new NpgsqlConnection("Server=localhost;User Id=postgres;Password=root;Database=postgres;");
conn.Open();
var datatable = new DataTable();
using (var command = new NpgsqlCommand("SELECT \"BitTable\".\"id\" AS \"BitTable_id\" ,\"BitTable\".\"bit_col\" AS \"BitTable_bit_col\" ,\"BitTable\".\"boolean_col\" AS \"BitTable_boolean_col\" FROM \"BitTable\" AS \"BitTable\" limit 100", conn))
{
using (var reader = command.ExecuteReader())
{
datatable.Load(reader);
}
}
conn.Close();
我怀疑问题出在DataTable本身,令人惊讶的是它无法正确读取数据。 (在3.1.10版本中,我的数据类型Bit列认为是布尔值,而在3.2.0版本中,我的数据类型Bit列认为是BitArray。所以,会发生此问题)
请为我提供最新的Npgsql版本中解决此问题的任何解决方案。