问题标签 [system.data.oracleclient]

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 回答
1890 浏览

.net - 如何在.net 中设置 OracleCommand.BindByName =true?

环境:

-Visual Studio 2010(.NET 框架 4)

  • ASP.NET 网络应用程序

  • 甲骨文数据库

  • 使用 System.Data.OracleClient

我有一个网络表单,用户可以在其中输入任何或不输入任何数据到与我的查询中的每个参数相对应的文本框中。如果用户没有输入数据,则文本框将获得“0”值。

这是我的查询:

SELECT "CardNo" , "Name" FROM CardList WHERE("CardNo"=:CardNo or :CardNo=0) and ("Name"=:Name or :Name=0)

当我在 MYDATABASE.xsd 面板中的表适配器上右键单击查询,然后选择“预览数据”并用“0”填充参数值时,我收到错误消息(“ORA-01008:并非所有变量都绑定”)。经过大量搜索后,我发现我应该设置 OracleCommand.BindByName =true (显然默认情况下它不是真的)

谁能帮我怎么做?

0 投票
4 回答
29319 浏览

c# - 如何在不使用过时的 OracleConnection 类的情况下建立 OracleConnection

建立 OraConnection 的“新”方式是什么?Microsoft 将几个类定义为过时的。

https://msdn.microsoft.com/en-us/library/system.data.oracleclient.aspx

我曾经使用过类似的东西:

然而,所有这些类似乎都已被弃用。

0 投票
1 回答
928 浏览

c# - 使用 Oracle 命令参数的问题

尝试创建一个 Web API 来查询以字符串数组形式接收输入的 Oracle DB。因此尝试添加命令参数

我还添加了以下参考 System.Data.OracleClient.dll,

但是出现如下错误 在此处输入图像描述

`使用命名空间指令只能应用于命名空间;'Oracle.ManagedDataAccess.Client.OracleParameter' 是类型而不是命名空间

using namespace 指令只能应用于命名空间;'System.Data.OracleClient.OracleParameter' 是类型而不是命名空间`

0 投票
2 回答
1423 浏览

c# - 此 OracleParameterCollection 的索引 0 无效,Count=0

我在这条线上遇到了异常。

有谁知道是什么问题?它在没有交易的情况下工作正常。此方法在添加事务后立即开始出错。

我正在使用内置的 .Net oracle 客户端库。

0 投票
1 回答
627 浏览

c# - C# WinForm Oracle 会话在连接关闭后挂起

我在不同的方法中使用多个连接,但是当我关闭连接时,连接会话在数据库会话中挂起为非活动状态,直到我终止 .exe 文件。我在 using 语句中使用连接,例如:

而且我还尝试手动关闭和处理连接并使用OracleConnection.ClearPool(con)OracleConnection.ClearAllPools()但它们都不起作用。

我使用的参考: System.Data.OracleClient 版本 2.0.0.0

连接字符串 数据源 = ip/db; 用户 ID = 用户;密码=pw;

0 投票
4 回答
1313 浏览

oracle - 如何使用 Windows 身份验证将 System.Data.OracleClient 连接到 oracle db?

使用 Oracle SQL Developer,我可以将 / -character 放入用户名并将密码留空并连接。我在数据库中创建了 OP$MYWINDOWSUSERNAME 用户。

编辑:如果我检查操作系统身份验证复选框(清空并禁用用户名 + 密码),SQL Developer 将不起作用。此外,Preferences->Database->Advanced->Use Oracle Client 未选中,所以我猜 SQL Developer 做什么或不做什么与我的 System.Data.OracleClient.OracleConnection 问题关系不大。

但是,当我尝试像这样形成连接字符串时:

我得到 ORA-01017: invalid username/password: login denied

我得到 ORA-01005。

我得到 ORA-01017: invalid username/password: login denied

我得到 ORA-01005

我得到 ORA-01017

当我指定用户名和密码时,我的程序中的 OracleConnection 和 Oracle SQL Developer 都可以工作。

编辑:这适用于

当 sqlnet.ora 行

改为

如果有人写下正在发生的事情和原因的简短回答,我很乐意为他/她提供赏金。

0 投票
2 回答
734 浏览

asp.net - 尝试加载 Oracle 客户端库引发 BadImageFormatException IIS System.Data.OracleClient

故事:我的网站在 System.Data.OraceClient 中运行(由于各种技术原因,我无法更改 dll)。现在,我有一个第三方 DLL 集成到我的网站,它是 32 位的。当我从 Visual Studio 运行时,一切运行良好,但是当我将其发布到 IIS 时,它会引发上述错误。

现在的解决方案是: 在 IIS 应用程序池中启用 32 位

启用 32 位后,第三方 DLL 将开始工作,并且System.Data.Oracle client fails with BadImageFormat exception

在 IIS 应用程序池中禁用 32 位。

当 32 位被禁用System.Data.OracleClient时,将开始工作,第三方 DLL 将失败并出现以下错误。

由于以下错误,检索具有 CLSID {xxxxx} 的组件的 COM 类工厂失败:xxxxxx 类未注册

-- 该类已注册。这就是为什么它在启用 32 位时工作的原因。

现在,我的情况是一次只有一个 dll 可以工作。在应用程序池中启用 32 位时,是否有一种解决方法可以让我的 System.Data.OracleClient 运行,而无需尝试将我的整个应用程序迁移到 Oracle 数据访问?

0 投票
1 回答
327 浏览

c# - OracleTransaction.Rollback() 是否取代存储过程中的提交?

假设我有从 c# 代码执行的多个存储过程的代码。每个存储过程都有一个提交和一个在异常情况下的回滚。异常在这些存储过程中进行处理并返回已处理的错误消息。

如果我有一个 OracleTransaction.BeginTransaction()“正在运行”,那么在执行存储过程时,在同一连接对象上,c# 代码中的 OracleTransaction.Rollback() 实际上会回滚先前执行的存储过程提交的数据。

逻辑如下:

  1. 打开连接
  2. 开始交易
  3. 执行一个存储过程(内部有提交)
  4. 如果一切正常,执行另一个存储过程(带提交)。如果不是,则回滚先前的存储过程并完全停止。
  5. 没有错误提交事务。谢谢你。
0 投票
1 回答
284 浏览

oracle - 是否可以使用 commandType = text 来调用使用 System.Data.OracleClient 的存储过程

我正在使用System.Data.OracleClient企业库连接到 Oracle 数据库,我想使用commandType = Text如下方式调用存储过程:

我不断收到无效的 SQL 语句错误,想知道是否可以用于CommandType.Text对 Oracle 的存储过程调用。

我们不能使用 ,CommandType = StoredProcedure因为传入的命令字符串在字符串中包含了存储过程调用的所有参数值。如果这是不可能的,我将不得不从字符串中解析出每个参数值并将它们放入参数对象中。

0 投票
1 回答
216 浏览

asp.net-core - 使用 ASP.Net 核心 2 和 OracleClient 从 Oracle 11g 检索 varchar2 时额外的尾随字符

我目前正面临一个烦人的问题,很乐意得到一些见解。

我正在开发一个简单的应用程序,它从 oracle 11g 数据库中检索一些记录并显示它们。

我正在使用 ASP.Net core 2 和 System.data.OracleClient 包来执行与数据库的连接。

但是,当我执行简单的选择并检索 varchar2 字段时,如下所示:

我用额外的尾随垃圾字符检索字符串,例如:“MYVALUE翙”翙实际上是一个额外的字符,它不存在于存储在数据库中的字段中。当我使用 sql+ 客户端时,我没有得到这个字符。

如果首先怀疑是字符集问题,但由于 char i 是一个额外的字符,并且 value 字段仅包含 ascii char,则不应...

敲响任何人的铃铛?

DBM 甲骨文 11g

NLS_NCHAR_CHARACTERSET AL16UTF16

NLS_CHARACTERSET WE8MSWIN1252

提前致谢

编辑:

客户端:路径和注册中的 Oracle 12C conf(32 位或 64 位):

NLS_LANG FRENCH_FRANCE.WE8MSWIN1252

编辑2:

额外的字符可以改变,得到ꌽ,⌴和其他一些。它确实看起来像一个字符集转换问题,但在连接器级别:(。

编辑3:

我刚刚使用非官方的基于单声道的 oracle 客户端( Mono.Data.OracleClientCore )进行了测试,得到了相同的结果。现在我怀疑它可能是连接器。也许基于 OCI 的客户端不读取路径或注册表配置...