gpt4 book ai didi

c# - .NET 中的 OraOLEDB 提供程序在 CLOB 字段上是否不可靠?

转载 作者:行者123 更新时间:2023-11-30 12:35:09 29 4
gpt4 key购买 nike

我有一个查询似乎从 OleDbDataReader 返回了错误的数据。我在下面包含了实际代码(用户 ID 和密码已更改)。我在 Oracle Express 10g 上运行。

如果我在 Oracle Web Admin Utility 中从 Toad 运行下面的 SQL,或者如果我将下面的代码更改为 OracleConnection,则返回的所有 4 条记录在“answer_text”列中都有值。

然而,在 OleDbDataReader 中,此代码在第二条记录上引发异常,它为“answer_text”返回 null 而不是预期值:“这是第二条开放式评论。现在事情真的变得很疯狂。”

有问题的字段在数据库中定义为 CLOB。

所以我的问题是,OraOLEDB 提供程序是否完全不可靠?这确实是参差不齐的行为。 4 条记录中的 3 条正确返回数据。只需将 OracleConnection 更改为 OleDbConnection 并从连接字符串中删除“Provider”似乎就可以正常工作。

不过,出于分发/支持的原因,我认为我的客户不想这样做。 Oracle 只是我们支持的 4 家数据库供应商之一,此代码适用于其余供应商。

这是一个已知错误吗?我缺少一些神秘的设置吗?我对 Oracle 没有太多经验,而且我无法从谷歌搜索这个问题中找到任何东西。任何建议将不胜感激。

        var connection = new OleDbConnection("Provider=OraOLEDB.Oracle;Data Source=localhost;User Id=x;Password=x;");
connection.Open();
var command = connection.CreateCommand();
command.CommandText = "select response_id, item_id, subitem_id, answer_id, answer_text, other_text, column_answer_id from sur_response_answer where item_id in (180, 181)";
var reader = command.ExecuteReader();
while (reader.Read())
{
if (reader.IsDBNull(reader.GetOrdinal("answer_text")))
throw new Exception("This should not be happening");
}

最佳答案

Oracle 支持有错误 9866728,但这适用于 OLEDB 提供程序 11.2.0.1。它已在文档 1272856.1 中列出的补丁中得到修复。要访问这些文档和补丁,您需要一个 Oracle 支持帐户。

关于 Oracle Express 10g,众所周知,它是一个不受支持的版本(从未发布过补丁),并且存在一些已知错误 - 我不会将它用于生产应用程序。加入 Oracle 合作伙伴网络将允许您使用开发/测试许可针对实际版本进行开发和测试,而不是过时的(尽管是免费的...)版本。

关于c# - .NET 中的 OraOLEDB 提供程序在 CLOB 字段上是否不可靠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6147274/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com