我已经成功地使用以下代码将数据从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
2条答案
按热度按时间e5nqia271#
多亏了保罗在评论中的建议,我才得以解决这个问题。由于odbc驱动程序不支持json,因此必须直接在查询中将列转换为文本。所以如果在我之前:
我将其替换为:
这会将列转换为普通文本,然后将其正确加载到
DataTable
.zzwlnbp82#
我认为更多的问题是odbc驱动程序不支持json数据类型—我的建议来自以下链接:https://forums.mysql.com/read.php?37,65072265127#msg-651027-我在发行说明中找不到任何对json数据类型的引用。
您可以尝试将列强制转换为char/varchar,作为一种解决方法。