问题标签 [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 投票
1 回答
581 浏览

oracle - 通过 Oracle.ManagedDataAccess.dll 将变量中的对象数组传递给存储过程

使用最新的 Oracle 托管驱动程序,不支持 Oracle.DataAccess.Types.OracleUdt 和 OracleDbType.Array 我想传递一个整数数组并从存储过程中检索相应的数据。

在 Oracle 中,我正在创建一个自定义类型并在过程中使用它。

目前我遇到了一个异常:PLS-00306:调用“MANAGED_DEMO_TEST”时参数的数量或类型错误

主要目的是将一组自定义类型对象传递给存储过程。我已经尝试过这个解决方案,但对我不起作用。得到了同样的例外。

0 投票
1 回答
813 浏览

c# - 指数数组的边界之外。在 OracleInternal.I18N.UTF16ConvUtility.GetRemainingBytes

指数数组的边界之外。在 OracleInternal.I18N.UTF16ConvUtility.GetRemainingBytes

每次都发生无法解释的错误,网上没有任何关于它的信息

原因

System.IndexOutOfRangeException: Index was outside the bounds of the array. at OracleInternal.I18N.UTF16ConvUtility.GetRemainingBytes(Int32 numBytesToRead, Byte[] buffer1, Int32 offset1, Int32 buffer1Bytes, IList`1 bytes, Int32& currSegIndex, Int32& continuationOffset, Byte[] dstBuffer) at OracleInternal.I18N.UTF16ConvAL16UTF16.ConvertBytesToChars(IList`1 bytes, Int32 bytesOffset, Int32 bytesCount, Char[] chars, Int32 charOffset, Int32& charCount, Boolean bUseReplacementChar) at OracleInternal.I18N.Conv.ConvertBytesToString(IList`1 bytes, Int32 bytesOffset, Int32 bytesCount, Char[] chars, Boolean bUseReplacementChar) at OracleInternal.I18N.Conv.ConvertBytesToString(IList`1 bytes, Char[] chars, Boolean bUseReplacementChar) at OracleInternal.ServiceObjects.OracleClobImpl.GetCompleteClobData(Int32 currentRow, Int32 columnIndex, OracleConnectionImpl connImpl, Byte[] lobLocator, DataUnmarshaller dataUnmarshaller, TTCLobAccessor lobAccessor, OracleClobImpl& oraClobImpl) at Oracle.ManagedDataAccess.Client.OracleDataReader.GetValue(Int32 i) at System.Data.Entity.Core.Common.Internal.Materialization.Shaper.ErrorHandlingValueReader`1.GetUntypedValueDefault(DbDataReader reader, Int32 ordinal) at System.Data.Entity.Core.Common.Internal.Materialization.Shaper.ErrorHandlingValueReader`1.GetValue(DbDataReader reader, Int32 ordinal) at lambda_method(Closure , Shaper ) at System.Data.Entity.Core.Common.Internal.Materialization.Shaper.HandleEntityAppendOnly[TEntity](Func`2 constructEntityDelegate, EntityKey entityKey, EntitySet entitySet) at lambda_method(Closure , Shaper ) at System.Data.Entity.Core.Common.Internal.Materialization.Coordinator`1.ReadNextElement(Shaper shaper) at System.Data.Entity.Core.Common.Internal.Materialization.Shaper`1.SimpleEnumerator.MoveNext() at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext() at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source) at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__1[TResult](IEnumerable`1 sequence) at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable`1 query, Expression queryRoot) at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[TResult](Expression expression) at System.Data.Entity.Internal.Linq.DbQueryProvider.Execute[TResult](Expression expression) at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1 source, Expression`1 predicate) at XX.XX.Program.Main(String[] args) in C:\XXX\Program.cs:line xx

职位类别

0 投票
0 回答
1467 浏览

c# - 通过 Nuget 的 Oracle ManagedDataAccess - 提供程序未返回 ProviderManifestToken 字符串

我有一台新机器,只有Visual Studio 2015和最新的.Net Framework ,克隆了一个存储库,该存储库使用 Nuget 的EntityOracle.ManagedDataAccess访问远程 Oracle 11g 数据库 ,这个项目在其他机器上工作,

我使用SqlDeveloper测试了远程连接,并使用 telnet 验证了端口访问,甚至创建了一个简单的本地 Oracle 数据库以排除任何与网络相关的错误

为了确认错误,我在 Oracle 文章之后创建了一个简单的控制台项目,但仍然出现相同的错误

例外 :The provider did not return a ProviderManifestToken string.

内部异常: ORA-01017: invalid username/password; logon denied

我没有安装任何 Oracle 客户端,据我所知,我不需要任何客户端,因为我使用的是 Nuget

是的,我非常确定用户和密码,如上所述,使用 SqlDeveloper 时连接有效

Oracle ManagedDataAccess Nuget

甲骨文文章

全栈跟踪

更新

找到了这个问题的答案,一个加密密码的 Windows 注册表设置,在这个问题中,如果需要,您可以在注册表或应用程序配置中找到禁用的方法

解决方案

0 投票
1 回答
96 浏览

c# - 将 DateTime 更新到 Oracle DB 从 c# 获取不是有效的月份错误

我正在使用Oracle.ManagedDataAccessnuget 对 oracle db 进行更新。我可以更新非日期数据,但是当我尝试插入数据时会引发Not a valid month异常。

字符串看起来像

我尝试了其他 DateTime 格式,但没有解决。

0 投票
1 回答
412 浏览

c# - oracle.ManageddataAccess 抛出 ORA-00928:插入数据时缺少 SELECT 关键字

我正在连接到远程 Oracle 数据库并Oracle.ManageddataAccess.dll用于执行更新和插入。我能够更新数据,但是当我试图插入它时会抛出ORA-00928: missing SELECT keyword异常,但我只是试图插入它。

它看起来像

并在命中ExecuteNonQuery()时引发ORA-00928: missing SELECT keyword异常。

这是我能够使用 SQL 服务器从链接服务插入 Oracle DB 的查询

0 投票
1 回答
166 浏览

sql - 在 VB.NET 中为 Oracle SQL 指定绑定日期参数

希望有人可以提供帮助。我Oracle.ManagedDataAccess.Client在我的 VB.NET 项目中使用从 Oracle 11g 数据库中提取信息。

我的项目使用硬编码的字符串,但我希望将日期时间更改为绑定变量,因为我听说服务器负载更容易。

我可以使用以下内容Using Ocommand As New OracleCommand(和硬编码的日期时间字符串,但无法Using使用直接连接和绑定变量替换以下内容:

这样做会在尝试填充数据表时出错:Oda.Fill(myDT)。谁能解释为什么?我对 Oracle 数据库查询还是很陌生。

0 投票
1 回答
1840 浏览

c# - 使用 Oracle.DataAccess.Client 的最佳实践是什么?

我正在查看一个较旧的应用程序的冗长数据访问代码。每个函数都在调用一个存储过程来从 Oracle DB 中选择一些东西。每个函数或多或少看起来像下面的代码:

我的问题是:

  1. 一些函数使用类级别的 OracleConnection 变量。什么是首选 - 功能级别或类级别变量?
  2. 检查是否dataReader == null必要?cmd.ExecuteReader()通话后它会为NULL吗?
  3. 连接关闭/处置和阅读器关闭/处置的功能不同。关闭/处置的正确方式/顺序是什么?如果连接被释放,阅读器不会自动关闭/释放吗?
  4. 我希望在不久的将来将 Oracle.ManagedDataAccess.Client 连接到这个项目。此代码中的任何内容是否会更改以与托管数据访问客户端一起使用?
  5. 除此之外,欢迎任何最佳实践/建议。

谢谢你。

0 投票
0 回答
74 浏览

web-services - 将 DLL 与 Web 服务一起使用

我正在使用较旧的网络服务并对其进行更新以符合我们的新系统。以前的系统使用 SSMS 数据库,而新系统使用 Oracle 数据库。

Web 服务是用 VB(可能是 VB6)编写的,并在 IIS 上运行到自定义构建的 UI。我只是想更新它以查找正确的字段并为新的 Oracle DB 使用正确的查询。

我遇到的问题是 Microsoft 已弃用 Oracle 类,因此尝试使用 OracleCommand 和 OracleConnection 之类的类是行不通的。相反,我们选择了 Oracle DLL,特别是 Oracle.ManagedData.Access,但 IIS 在运行时编译 VB 代码,它找不到 DLL 并导致错误。

关于如何在运行时将 DLL 放入 ISS 编译器的任何建议?

我得到的错误是编译器错误。

“编译错误描述:在编译服务此请求所需的资源期间发生错误。请查看以下具体错误详细信息并适当修改您的源代码。

编译器错误消息:BC30002:未定义类型“OracleCommand”。”

提前致谢。

0 投票
2 回答
2253 浏览

c# - 实体框架 ORA-00932:不一致的数据类型:“'expected CLOB got CHAR”

Oracle.ManagedDataAccess.EntityFramework 6.122.1.0 库用于从 MVC ASP.Net 应用程序访问 Oracle 数据库。截至 2017 年 11 月 14 日,它是来自 NuGet 的最新库版本

有问题。发生这种情况是因为很长的字符串(几千个字符)被连接到 LONGSTRING中,并且执行Selectthrow 下一个异常。

ORA-00932: 不一致的数据类型: "'expected CLOB got CHAR"

我的班级需要得到ExpressionGetSelector()重要的。如何克服错误或绕过它?绕过的一种方法是强制 EFSelect在客户端上执行。怎么做?

PS:同样的问题在俄语中。

更新

我应该展示 MyEntity

0 投票
0 回答
137 浏览

c# - C# 中的 ODAC 引用疑难解答

我最近在我正在处理的项目中将我的 Oracle 数据访问组件升级到 12.2.010。我从 Oracle 的网站下载了安装程序。从那时起,我在程序中运行的第一个查询(不管是哪一个)比以前多花了几秒钟的时间。在最初的之后,它似乎加快了速度。我还看到在每个查询期间大约 6 次抛出以下异常(显示在 VS 输出窗口中):

查询最终会返回我需要的数据,但显然发生了一些奇怪的事情。似乎它可能要尝试多次才能建立连接。关于如何解决此问题的任何建议?