1

我正在OdbcConnection使用 C# 连接到 DB2 数据库。我正在连接、进行查询等,一切都很顺利,直到我查询数据类型为 XML 的字段。我收到一条错误消息Unknown SQL type - -370。我发现 .NET ODBC 驱动程序对 LOB 字段(此处)的限制,但错误代码是 -98 (LOB)、-99 (CLOB) 和 -350 (DBCLOB)。有一个解决方法建议我添加LONGDATACOMPAT=1到我的连接字符串中,但这不适用于 -370。有谁知道我怎样才能解决这个问题?

4

2 回答 2

1

XMLSERIALIZE查询和LONGDATACOMPAT=1连接字符串中(如上所述),我能够从使用 CLOB 数据类型的字段中获取大型 (>100KB) XML。像这样的东西对我有用:

var command = connection.CreateCommand();
command.CommandType = CommandType.Text;
command.CommandText = 
    "SELECT XMLSERIALIZE(xmlfield AS CLOB(10M)) AS xmlfield FROM [table] WHERE [condition]";
using (command)
{
    using (var reader = command.ExecuteReader())
    {
        while (reader.Read())
        {
            var foo = !reader.IsDBNull(0) ? reader.GetString(0) : null;
            //do stuff...
        }
    }
}

我已将最大 CLOB 大小设置为 10 兆字节,这对我的项目来说是一个安全的上限。有关更多信息,请参阅IBM 关于 XMLSERIALIZE 的页面。

于 2021-07-08T04:05:46.717 回答
-1

mustaccio 的链接(此处)提供了解决方案。

于 2013-10-18T08:53:35.263 回答