问题标签 [oracle.manageddataaccess]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
492 浏览

c# - ODP.NET:Oracle.ManagedDataAccess.Client.OracleException (0x80004005):.NET 5(核心)应用程序上的 ORA-01841

尝试使用 C# .NET 5 Web 应用程序使用 Oracle.ManagedDataAcces.Client (ODP.NET) 执行选择。

截至 2021 年 2 月 6 日,Oracle.ManagedDataAcces.Client 版本是最新的 3.21.1。

错误:

Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware 1 执行请求时发生未处理的异常。 Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-01841: (full) year 必须介于 -4713 和 +9999 之间,并且在 OracleInternal.ServiceObjects.OracleConnectionImpl.VerifyExecution(Int32& cursorId, Boolean bThrowArrayBindRelatedErrors, SqlStatementType sqlStatementType, Int32 arrayBindCount, OracleException& exceptionForArrayBindDML, Boolean& hasMoreRowsInDB, Boolean bFirstIterationDone)

这是查询代码

在 Oracle SQL Developer 或 PL/SQL 中执行查询是可行的。也来自visual studio server exporer 作品。弹出一个窗口,要求输入参数,输入为 VARCHAR2,它可以正常执行查询。

我什么都试过了。出于测试目的,从 Int16、Int32、VARCHAR2 更改类型,也基于Oracle .NET 类型指南,该指南指出 Int16 的长度为 4,在我的情况下是一年。没有。

我还尝试使用此 stackoverflow question 中显示的内容来检索 SQL 查询历史记录,以发现显然从外部触发的查询不会被记录。我无法通过此查询找到它们。

它工作的唯一方法是直接连接查询中的值:

但我想使用参数来避免 SQL 注入。

我究竟做错了什么?

0 投票
0 回答
261 浏览

visual-studio - 如何修复 Visual Studio 2019 中的错误“Visual Studio 的 Oracle 开发人员工具配置不正确”?

  1. 我在我的电脑上安装了 Visual Studio 2019

  2. 我在我的计算机上安装了适用于 Visual Studio 2019 的 ODT(ODTforVS2019_133100)。

  3. 我启动了 Visual Studio 2019 新的 MVC 应用程序。

  4. 通过 NugetPackages:

    • 我安装了 EntityFramwdork
    • 我安装了 Oracle.ManagedDataAccess
    • 我安装了 Oracle.ManagedDataAccess.EntityFramewok
  5. 我想添加 Models->Add->New Item->Data->ADO.Net Entity Data Model。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

我收到上面显示的错误。请帮助解决这个问题。

0 投票
0 回答
15 浏览

c# - 批量查询c#的命令超时问题

我正在使用 Ref Cursors 在批量查询中读取多个数据。它工作正常,但问题是命令超时在批量读取的情况下不起作用。没有光标,命令超时有效。我的示例代码是

有没有其他方法可以在不使用游标的情况下读取批处理查询。

0 投票
0 回答
72 浏览

c# - ORA-12154 使用连接字符串时

在尝试使用定义连接而不使用 TNS 的连接字符串进行连接时,我收到 ORA-12154(TNS:无法解析指定的连接标识符)。

只要代码在没有设置 TNS 的机器上运行,一切正常。一旦代码在设置了 TNS 的机器上运行,我就会抛出错误。

正如我从开发人员指南(链接)中获取的那样,使用格式正确的连接字符串实例化连接应该将ConnectionString 属性设置为提供的连接字符串。解析 ConnectionString 属性,如果它包含无效的连接字符串属性或属性值,则会引发异常。

然而,在我的情况下,似乎客户端计算机上设置的 TNS 正在覆盖连接字符串,否则它工作得很好,并且正在 tnsnames.ora 中寻找连接/别名。

到目前为止,我不知道如何说服机器忽略 TNS(设置),如果在客户端机器上找到并使用提供的连接字符串。

0 投票
0 回答
74 浏览

c# - 使用 .Net 从 Oracle 获取插入记录的 ID 而不是“TTCError”

我们正在更新旧应用程序以使用“新” Oracle.ManagedDataAccess,而不是本地安装的 Oracle 客户端。但从那时起,一个简单的陈述如下。ID 列填充有触发器和序列。

但这现在会导致“TTC 错误”,没有内部异常,也没有异常中的任何其他细节。在异常中,堆栈跟踪只是对“ OracleInternal.TTC.OraBufReader.ReadLengthAndData(Byte repOffset, Byte typeRep, Byte[]& dataBuffer, Int32& offset, Int32& bufLength, Boolean IgnoreData)”的单一调用。

发生此异常时调试器中的调用堆栈为:

一篇(非常旧的)帖子指出,在表上使用触发器时会发生这种情况,因此我让 DBA 创建了一个具有相同结构但具有标识列的表。但这并没有改变任何东西,仍然是信息性消息“TTC错误”。

我们正在使用 .Net Framework 4.6.2 和 Oracle.ManagedDataAccess v19.12.0。数据库(从 v$version 读取)为:Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.11.0.0.0

编辑:将库更新到 v19.13.0 并未解决此问题。

0 投票
0 回答
653 浏览

oracle - Oracle.ManagedDataAccess 21.4.0 不会安装

我在 Visual Studio (VB.net) 中有一个 Web 应用程序,我正在尝试通过 Nuget 包管理器安装 Oracle.ManagedDataAccess 21.4.0。.NET 目标框架是 4.6.1,我通过 NuGet 安装了 System.Text.Json 5.0.2。

由于某种原因,当我尝试安装它时,它不会。这是输出:

安装失败。滚回来...

项目“RuntestWeb”中不存在包“Oracle.ManagedDataAccess.21.4.0:System.Text.Json [5.0.2, )”

文件夹“C:\SvnWebApp\packages”中不存在包“Oracle.ManagedDataAccess.21.4.0: System.Text.Json [5.0.2, )”

无法安装包“Oracle.ManagedDataAccess 21.4.0”。您正在尝试将此包安装到以“.NETFramework,Version=v4.6.1”为目标的项目中,但该包不包含任何与该框架兼容的程序集引用或内容文件。有关详细信息,请联系包作者。

我看到安装在 Nuget 中的 Json 和引用中的 DLL,我还看到了包下的文件夹。

是什么赋予了?