c# - 在 C# 中将数据加载到 DataTable 会出现 "Unknown SQL type - 0"错误

标签 c# mysql datatable

我已经成功地使用以下代码将数据从 ODBC 连接加载到 C# DataTable 一段时间,没有出现问题:

public static DataTable ExecuteSqlSelect(string sql, string connectionString)
        {
            var result = new DataTable();
            using (var connection = new OdbcConnection(connectionString))
            {
                connection.Open();

                var command = connection.CreateCommand();
                command.CommandText = sql;
                var dbReader = command.ExecuteReader();
                result.Load(dbReader);

                connection.Close();
            }

            return result;
        }

但是,我现在有一个 MySql 表,其中有一列类型为 JSON。当我尝试使用该方法从该表加载数据时,出现以下错误:

Unknown SQL type - 0.

我认为这是因为 C# 的 DataTable 无法识别 JSON 类型。它是否正确?更重要的是:是否有解决方案/解决方法?

编辑:我尝试将JSON字符串转换为DataTable,正如评论者所建议的...我正在尝试加载包含列的SQL表MySQL 在 DataTable 中输入“JSON”。我不需要 JSON 解析,如果我只是将原始 JSON 字符串放入 DataTable 中就可以了。

编辑 2:MySql 和 ODBC 连接器都是最新版本:8.0.11

最佳答案

多亏了 PaulF 在评论中的建议,我才得以解决这个问题。由于 ODBC 驱动程序不正确支持 JSON,您必须直接在查询中将列转换为文本。所以如果之前我有:

SELECT col1, col2, jsonCol FROM table;

我将其替换为:

SELECT col1, col2, CAST(jsonCol as CHAR(256)) as jsonCol FROM table;

这会将列转换为普通文本,然后将其正确加载到 DataTable 中。

关于c# - 在 C# 中将数据加载到 DataTable 会出现 "Unknown SQL type - 0"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50931551/

相关文章:

mysql - 计算一对多关系中存在多少

php - 如何使用datatables jquery将数据参数发送到服务器

javascript - jQuery数据表立即隐藏列

java - 在linux下使用java恢复mysql数据库

python - 在 Django 中选择所有具有最新时间戳的内容?

ruby-on-rails - 尝试更改数据表的设计外观时无法在 Rails 4 中找到文件 'jquery.ui.core'

c# - 对齐多个排序列表

c# - DTO 是否应该包含其他 DTO,或者这是否构成 'behaviour'?

c# - 异步编程 : await inside a function that is not async

c# - 如何获得浏览量最高的前5名产品?