将数据加载到c中的datatable会出现“unknown sql type-0”错误

cidc1ykv  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(465)

我已经成功地使用以下代码将数据从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.

我想这是因为 JSON c#无法识别类型 DataTable . 是这样吗?更重要的是:是否有解决方案/解决方法?
编辑:我并不是像一个评论员建议的那样,试图将json字符串转换为datatable。。。我正在尝试将包含mysql类型“json”的列的sql表加载到datatable中。我不需要json解析,只要将原始json字符串放入datatable就可以了。
编辑2:mysql和odbc连接器都是最新版本:8.0.11

e5nqia27

e5nqia271#

多亏了保罗在评论中的建议,我才得以解决这个问题。由于odbc驱动程序不支持json,因此必须直接在查询中将列转换为文本。所以如果在我之前:

SELECT col1, col2, jsonCol FROM table;

我将其替换为:

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

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

zzwlnbp8

zzwlnbp82#

我认为更多的问题是odbc驱动程序不支持json数据类型—我的建议来自以下链接:https://forums.mysql.com/read.php?37,65072265127#msg-651027-我在发行说明中找不到任何对json数据类型的引用。
您可以尝试将列强制转换为char/varchar,作为一种解决方法。

相关问题