c# - System.ArgumentException: '值类型与列类型不匹配无法存储在 BitTable_bit_col 列中。预期的类型是 BitArray。
问题描述
我在 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 版本中解决此问题。
解决方案
推荐阅读
- android - 通过 slack 交付构建,Circle CI 无法在 Android 中运行
- bash - 从终端上的输出中获取 bash 输入
- ibm-integration-bus - IBM App Connect Enterprise - 将路径参数传递给休息请求节点
- python - 我用 pygame 制作了一个类似胭脂的游戏,但我得到了 NameError: name 'Bullet' is not defined 即使它是?
- linux - 我的脚本不工作,对不起,我知道这可能是重复的,但我仍然习惯 perl
- android - 为什么android拍照要提供内容提供者?
- python-3.x - 将 numpy 数组的 dtype 更改为自定义
- google-sheets - 获取 Google 表格中数据验证值的引用单元格和表格
- c# - C# GoogleSheets 更新请求未执行
- c++ - 运行时错误:补数问题的整数溢出