Tag: oracle

Oracle.ManagedDataAccess.dll中的OracleBulkCopy类?

我正在使用OracleBulkCopy类来引用Oracle.DataAccess.dll。 我想使用Oracle.ManagedDataAccess.dll来轻松部署。 但后来我遇到了构建错误“找不到OracleBulkCopy” 有谁知道为什么OracleBulkCopy不包含在Oracle.ManagedDataAccess.dll中?

web.config asp.net中的oracle数据库连接

我知道我可以在c#类本身创建一个连接字符串,但我试图避免这样做。 我想在web.config中创建连接,我读的更安全。 然而,我找不到任何具有以下属性的示例: 主机名 港口 SID 用户名 密码 连接名称 有人可以帮忙请在webconfig中创建吗? 我正在连接到oracle DB。

Oracle.DataAccess.Client依赖项

首先,我想使用Oracle.DataAccess.dll来使用OracleBulkCopy 。 我想知道我需要能够从数据库中读取的所有dll,然后在Oracle中执行批量复制。 目前,我们只使用一个dll来执行数据库的所有读取,我们使用的是Oracle.ManagedDataAccess.Client 。 但我不能用它来执行bulkCopy。 我不想为用户安装ODP.NET,我想直接在程序中包含dll。 所以我想知道能够在32位和64位中使用Oracle.DataAccess.dll所需的最低dll。 我知道有一些关于这个的老post,但它很安静,列出的dll已经过时了。 我无法找到其中一些事件。 我为ODAC12安装了ODP.net,我在这篇文章中检索了所有列出的dll。 我也尝试过这篇文章 。 列出的dll指出版本11。 我做了一个虚拟项目,打开一个连接,读取一个表并在另一个表中进行批量处理。 我从项目根目录中的post中复制了列出的dll,并在项目中包含了Oracle.DataAccess.dll 。 当我以64位运行我的程序时,我收到以下错误: 无法加载文件或程序集’Oracle.DataAccess,Version = 4.121.2.0,Culture = neutral,PublicKeyToken = 89b483f429c47342′ 当我以32位运行它时,我收到此错误: 无法加载DLL’OraOps12.dll’:找不到指定的模块。 (HRESULTexception:0x8007007E)“ 我包括的dll是: OCI.DLL OCIW32.DLL Oracle.DataAccess.dll orannzsbb12.dll oraocci12.dll oraociei12.dll OraOps12.dll

在64位计算机上以32位模式运行Oracle客户端

我刚刚从32位Windows 7桌面迁移到64位Windows 7笔记本电脑。 我们正在开发一个包含解决方案中大约60个项目的C#程序。 我在尝试构建时遇到以下错误: Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed 显然错误是非常自我解释的,我试图让我的整个解决方案以32位模式加载。 我已经完成了每个项目并将目标平台设置为x86,但我仍然遇到此错误。 我搜索过Google并看到了无数不同的方法,但我似乎无法解决这个问题。 确保我的项目在64位计算机上以32位模式运行的最佳方法是什么? 我正在使用Visual Studio 2008.我目前正在考虑降级到32位,但我真的想避免这样做。

C#:将用户定义的类型传递给Oracle存储过程

参考Oracle:存储过程的可变参数数量 我有存储过程将多个用户插入到User表中。 该表定义如下: CREATE TABLE “USER” ( “Name” VARCHAR2(50), “Surname” VARCHAR2(50), “Dt_Birth” DATE, ) 插入多个用户的存储过程是: type userType is record ( name varchar2(100), … ); type userList is table of userType index by binary_integer; procedure array_insert (p_userList in userList) is begin forall i in p_userList.first..p_userList.last insert into users (username) values (p_userList(i) ); end array_insert; 如何从C#调用存储过程传递userType的userList? 谢谢

Oracle Instant Client和Entity Framework在配置方面存在问题

我正在尝试学习并弄清楚是否可以将MVC,EF,ODAC 11.2.0.3应用程序部署到安装了先前版本的ODP.NET的服务器上。 我认为我可以使用Oracle Instant Client,而不是更新服务器ODP.NET(我不能)。 这可行吗? 1)我将这些dll添加到我的项目中以支持Instant Client -Oracle.DataAccess.dll -oci.dll -ociw32.dll -orannzsbb11.dll -oraociei11.dll -OraOps11w.dll 2)接下来我更新了dbProviderFactories的web.config 3)这个(afaik)是如何在bin rathre中使用Oracle dll而不是GAC 4)最后我的connectionString 这是我收到的错误无法找到请求的.Net Framework数据提供程序。 它可能没有安装。 我真的很感激这里的任何帮助。 我很新,有很多东西需要学习。 提前致谢。 干杯

Oracle.DataAccess.Client.OracleException ORA-03135:连接丢失联系

我有一个.Net服务,可以在每次请求时连接到Oracle数据库。 它在开始时工作正常,但在我开始获得一些请求之后: Oracle.DataAccess.Client.OracleException ORA-03135: connection lost contact at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure) at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, String procedure, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src) at Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean requery, Boolean fillRequest, CommandBehavior behavior) at Oracle.DataAccess.Client.OracleCommand.ExecuteReader() at MyApp.Services.OracleConnectionWithRetry.ExecuteReader(OracleCommand command) … 知道可能是什么问题吗? 我处理所有连接,结果和参数。 这项服务的负担非常低。

Oracle .Net ManagedDataAccess错误:无法从程序集加载类型’OracleInternal.Common.ConfigBaseClass’

我有一个在本地,我们的开发服务器和我们的生产服务器上工作的项目。 当我尝试在测试服务器上运行它时,我得到下面的错误,除了茫然地盯着我的屏幕,我不知道该怎么办。 提示? 将问题追溯到其来源的过程? 我已经为Oracle 12.2等安装了NuGet包。 无法从程序集“Oracle.ManagedDataAccess,Version = 4.121.2.0,Culture = neutral,PublicKeyToken = 89b483f429c47342”加载类型“OracleInternal.Common.ConfigBaseClass”。 描述:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。 exception详细信息:System.TypeLoadException:无法从程序集“Oracle.ManagedDataAccess,Version = 4.121.2.0,Culture = neutral,PublicKeyToken = 89b483f429c47342”加载类型“OracleInternal.Common.ConfigBaseClass”。 来源错误: 在执行当前Web请求期间生成了未处理的exception。 可以使用下面的exception堆栈跟踪来识别有关exception的起源和位置的信息。 堆栈跟踪: [TypeLoadException:无法从程序集’Oracle.ManagedDataAccess,Version = 4.121.2.0,Culture = neutral,PublicKeyToken = 89b483f429c47342’加载类型’OracleInternal.Common.ConfigBaseClass’。 Oracle.ManagedDataAccess.EntityFramework.EntityFrameworkProviderSettings.Oracle.ManagedDataAccess.EntityFramework.EFProviderSettings.IEFProviderSettings.get_TracingEnabled()+0 Oracle.ManagedDataAccess.EntityFramework.EFProviderSettings.InitializeProviderSettings()+111 Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices..ctor()+629 Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices..cctor()+28 [TypeInitializationException:’Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices’的类型初始值设定项引发exception。 Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices.get_Instance()+24 Web.Config中包含以下块: 和 注意:此服务器上还有其他项目,它们只是为.Net使用不同版本的Oracle客户端。 其他人都没有使用托管驱动程序。 我正在寻找一种方法来深入研究这个错误,一些暗示该类型的来源和加载方式。

将C#连接到Oracle

将C#(.NET)应用程序连接到Oracle 10g和11g的最佳库/驱动程序是什么。 我找到的当前选项是: 数据库安装附带的Oracle客户端 Oracle Instant Client(由于操作系统数量为6-8个版本,因此有点令人困惑) Microsoft ODBC? (这可以用吗?) ODP.Net – 是这个单独的产品还是包含在1.和2.? 有人可以解释一下差异吗? 我正在计划将在Oracle数据库上执行基本CRUD操作的C#应用​​程序。 哪个库/驱动程序最小且最容易安装? 编辑: 一般建议是使用ODP.Net。 现在,有人可以解释或指出回答客户端安装包之间的差异。 我为Oracle 11g找到了3个不同的客户端: Oracle客户端 – 客户端驱动程序包,作为数据库安装的一部分提供 ODAC – Oracle数据访问组件 ,包含很多东西,其中包括ODP.Net和Oracle Instant Client Oracle Instant Client还包含很多东西,包括ODP.Net 那么,哪一个足够发展? Oracle文档非常详细,但没有说明这些客户端软件包之间的差异。 我会选择最小的(即时客户端)。 这是最好的选择吗? 编辑2: 我正在使用.Net 3.5

UPSERT进入具有动态表名的表

任何更好的UPSERT进入表的方法,提供: 数据以~1行/秒进行upsert 表名是DYNAMIC,使用传递给它的ObjectID参数生成 以下程序:“ORA-00942:表格或视图不存在” CREATE OR REPLACE PROCEDURE PROCEDURE “SPINSERTDATA” ( pObjectID IN RAW, pDateTime IN TIMESTAMP, pValue IN BINARY_DOUBLE, ) AS BEGIN Declare vQueryInsert VARCHAR2(1000); vQueryUpdate VARCHAR2(1000); vTableName VARCHAR2(30); Begin vTableName := FGETTABLENAME(POBJECTID => pObjectID); vQueryUpdate := ‘UPDATE ‘ || vTableName || ‘ SET “VALUE” = :1’; vQueryInsert := ‘INSERT INTO ‘ || vTableName […]