System.ArgumentException:'值的类型与列类型不匹配。无法在BitTable_bit_col列中存储<true>。预期的类型为BitArray。'

时间:2018-12-24 11:48:25

标签: c# postgresql ado.net npgsql

我在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版本中解决此问题的任何解决方案。

0 个答案:

没有答案