问题标签 [odp.net-managed]
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.
c# - 尽管有行,OracleDataReader 没有被迭代
我正在使用 Oracle.ManagedDataAccess 19.6.0 从 Oracle 11g 11.2.0.3.0 获取一些数据
直到昨天,这段代码都运行良好。Oracle 返回 223 行。但是while (orclDataReader.Read())
被跳过了,好像没有行一样。
我究竟做错了什么?特别是考虑到同样的代码已经运行了至少一周。
vb.net - OracleDataReader 为存储过程结果中的列返回 DBNull
首先,我很抱歉这可能是一个广泛的问题,但我已经尝试了我能想到的一切,感觉我正在失去理智。
我正在使用 Oracle Managed Data Access 调用存储过程并使用OracleDataReader
它来读取过程的结果。当我使用完全相同的参数执行存储过程时,它会返回 25 行,其中有问题的列具有这些行之一的值。当我通过代码调用它时,我得到了完全相同的结果集,除了一列全为空。如果有帮助,列类型是 Double 类型。
有什么想法可以进一步解决这个问题吗?
调用过程的代码:
odr("STATUS")
对于所有记录,始终为 DBNull,其中在 Toad 中,第一条记录的值为 1。
谢谢
c# - 是否可以在 ODP.NET 中将 Oracle 用户定义类型 (UDT) 转换为 byte[]/blob?
我们的 .NET 应用程序使用带有 SDO_GEOMETRY 的 ODP.NET,它是用于空间功能的 UDT。目前只有 Oracle 非托管驱动程序支持在 ODP.NET 中使用 UDT。虽然看起来UDT 支持肯定在 ODP.NET 团队的雷达上。
我想知道是否有基于 byte[] 等的手动方式来转换进出 UDT。我在上面发布的链接中知道人们正在使用 WKT 作为解决方法,但我们也会愿意接受为 C# SDO Geometry、SDO_Point 等编写我们自己的适配器的想法,这些适配器具有类似的东西ToBytes()
并且FromBytes()
是否可以在查询中使用。
是否可以将 SHAPE 属性转换为 BLOB,然后编写一些 C# 来反序列化它?也许您必须编写自己的 PL/SQL 函数来将 BLOBS 转换为 SDO_Geometry?
由于托管驱动程序的便利性,我们希望能够使用它,因此我们不必针对多个版本的非托管驱动程序进行编译,也不必在具有不同非托管客户端配置的客户端环境中工作。
最后的后备方案是选择一个版本的 Oracle 客户端,只要求客户安装该版本的非托管客户端,但他们需要注意多个并行安装(PATH , GAC, machine.config 等)
c# - 在哪里/如何查看 ODP.NET 源代码?
我有一个正在测试的程序,我想查看“幕后”的代码,特别是 OpenWithNewPassword方法(可能必须在页面上按 Ctrl+F)。是否有类似于Oracle 提供的来自 Microsoft的Reference Source的东西?我唯一能找到的是对方法是什么以及它的作用的定义。
c# - “ODP.NET,托管驱动程序”因 System.Data.Common.DbProviderFactories.GetFactory 而失败。但是“原始”有效
啊啊啊。Oracle 和 DotNet 框架代码。
我正在尝试工厂创建一个“ODP.NET,托管驱动程序”
我正进入(状态
找不到请求的 .Net Framework 数据提供程序。它可能没有安装。
我已经走到了下面的极端,以确保它“在那里”。
“原始”与使用工厂调试提示来自这里:ODP.NET Managed - Unable to find requested .Net Framework Data Provider
Program.cs 和“主要”
请注意,我没有收到“ArithmeticException”(人造)异常......所以我知道它不是 f@t-finger 语法错误错误。
应用程序配置
包.config
错误
找不到请求的 .Net Framework 数据提供程序。它可能没有安装。
但是,它位于 DataTable/DataSet/Xml 中
xml =(注意,最后一个条目,并且有一个密切相关的条目)
请注意,我也尝试过:
请注意,我看到的一件奇怪的事情是使用“/clear”....我仍然将其作为 xml
更新:
我运行 VS2019“作为管理员”,但同样的错误。
我的 machine.config (C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config )
(那里没有神谕)
关于钓鱼“conn”的输出。
更新 (2)
(上面的新 cs 代码...这里有 2 个感兴趣的条目)::
整个输出:
(我的问题不是太大,我无法更新所有内容:()
oracle - ODP.Net 驱动程序在 .NET Core 5.0 上引发异常
我正在尝试将我的数据库应用程序从 .NET Core 3.1 移植到 .NET Core 5.0。
运行以下代码时,
我得到这个例外:
"System.Reflection.TargetInvocationException: 调用目标引发了异常。\r\n ---> System.TypeInitializationException: 'OracleInternal.ServiceObjects.OracleConnectionImpl' 的类型初始化程序引发了异常。\r\n - --> System.TypeInitializationException: 'Oracle.ManagedDataAccess.Types.TimeStamp' 的类型初始化程序引发异常。\r\n ---> System.NotSupportedException: BinaryFormatter 序列化和反序列化在此应用程序中被禁用。请参阅https:/ /aka.ms/binaryformatter有关详细信息。\r\n 在 OracleInternal.Common.OracleTimeZone.GetInstance()\r\n 在 Oracle.ManagedDataAccess.Types.TimeStamp..cctor()\r\n --- 内部异常堆栈跟踪结束 -- -\r\n 在 Oracle.ManagedDataAccess.Types.TimeStamp.InitializelatestTZversion()\r\n 在 OracleInternal.ServiceObjects.OracleConnectionImpl..cctor()\r\n --- 内部异常堆栈跟踪结束 ---\r \n 在 OracleInternal.ServiceObjects.OracleConnectionImpl..ctor()\r\n --- 除离子堆栈跟踪之外的内部结束 ---\r\n"
是否可以从我的应用程序中解决这个问题?
我正在使用 Oracle.ManagedDataAccess.Core 2.19.91 的最新版本,发布于 2020 年 10 月 22 日。另外,我使用的是 Dapper 2.0.35。
oracle - Oracle.ManagedDataAccess.Client 无法使用 Windows 身份验证进行连接
我们无法使用 Oracle.ManagedDataAccess.Client 和 windows 身份验证连接到 Oracle 19c。常规 .NET 4.0 应用程序能够连接,但 .NET Core 应用程序无法连接(两者都使用托管驱动程序)。
下面是我们正在使用的代码:
sqlnet.ora 设置正确
oracle - ODP.NET 和托管连接失败并出现 ORA-12154
我认为通过 Oracle.ManagedDataAccess.Core NuGet 包使用 ODP.Net Managed Connections 的全部意义在于您不需要在运行时环境中安装 Oracle 客户端。我发现很多关于
ORA-12154: TNS: 无法解析指定的连接标识符错误
错误,但所有关于潜在修复的讨论都围绕客户端配置问题展开。
我所做的正是本文中所描述的。当我从 Visual Studio 本地运行该应用程序时,该应用程序连接良好,但是当它由 Azure 管道构建和部署时,它无法连接。来自服务器的连接不是问题,并且没有 tnsnames.ora 和 sqlnet.ora 文件,或者 TNS_ADMIN 和 ORA_HOME 环境变量。
我也尝试了这个 EZ Connect 字符串,但没有成功:
<user>/<password>@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=<ip address>)(Port=<port>))(CONNECT_DATA=(SID=<mysid>)))
我错过了什么?
更新:该问题似乎是由 Azure 混合连接管理器而不是 Oracle 连接的潜在问题引起的。现在查看 VPN 连接。暂时保留您尝试不同连接字符串格式的建议。
.net - 使用别名时 Oracle 托管数据访问似乎忽略了端口
我收到以下错误
在我的配置文件中使用以下别名。请注意,配置文件中的端口是 1522,但错误引用了端口 1521。
更改连接字符串
至
解决问题。
来自 Oracle 文档(https://docs.oracle.com/cd/E63277_01/win.121/e63268/InstallManagedConfig.htm#ODPNT8161)
遵循以下优先顺序来解析连接字符串中数据源属性中指定的数据源别名。
- .NET 配置文件中 <oracle.manageddataaccess.client> 部分下的 dataSources 部分中的数据源别名。
- tnsnames.ora 文件中的数据源别名,位于 .NET 配置文件中 TNS_ADMIN 指定的位置。位置可以由绝对或相对目录路径组成。
- 与 .exe 位于同一目录中的 tnsnames.ora 文件中的数据源别名。
所以,我不认为它是从另一个位置读取的。
有谁知道这可能是什么原因?
.net - 在 ODP.NET 中使用私有临时表
我找不到太多关于此的信息,但我认为这是不可能的,因为 ODP.NET 似乎不允许您将多个语句作为单个命令执行。
如果我有以下查询
是否可以在 ODP.NET 中将其作为单个命令执行?
目前的尝试给出了这个错误。