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