微软提供oracle的驱动默认是不支持TransactionScope,除非安装oracle相应的程序,但是odp.net即oracle提供驱动不存在此类问题,
namespace OracleTransactionScopeApp
{
using System;
using System.Data;
using Oracle.DataAccess.Client;
using System.Transactions;
using System.Data.Common;
class Program
{
static void Main(string[] args)
{
try
{
using (TransactionScope tran = new TransactionScope())
{
ExampleDao dao = new ExampleDao();
dao.Excute1();
dao.Excute2();
dao.Excute3();
tran.Complete();
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
Console.ReadLine();
}
}
public class ExampleDao
{
protected void Excute(Action<IDbCommand> action)
{
using (OracleConnection con = new OracleConnection("Password=\"password\";User ID=userid;Data Source=database;"))
{
using (OracleCommand com = con.CreateCommand())
{
try
{
con.Open();
action(com);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
finally
{
con.Close();
}
}
}
}
public void Excute1()
{
this.Excute(com =>
{
com.CommandText = "select sysdate from dual";
Console.WriteLine(com.ExecuteScalar());
Console.WriteLine(Transaction.Current.TransactionInformation.LocalIdentifier);
}
);
}
public void Excute2()
{
this.Excute(com =>
{
com.CommandText = "select sysdate from dual";
Console.WriteLine(com.ExecuteScalar());
Console.WriteLine(Transaction.Current.TransactionInformation.LocalIdentifier);
});
}
public void Excute3()
{
this.Excute(com =>
{
com.CommandText = "select sysdate from dual";
Console.WriteLine(com.ExecuteScalar());
Console.WriteLine(Transaction.Current.TransactionInformation.LocalIdentifier);
});
}
}
}
但是在使用的时候发现一个小问题,当数据库服务器是Oracle11时,客户端是Oracle10,而程序一直报用户名和密码错误,在查询相关资料后,发现oracle11的密码可能区分大小写的。解决方式,一个是设置数据库密码不区分大小写,第二个就是在密码上加上引号。
引用:
Thread: "ORA-1017: invalid username/password; logon denied"
分享到:
相关推荐
通常,它会包含ODP.NET的数据提供者组件和其他必要的DLL文件,这些文件在运行时被.NET应用程序引用,以实现与Oracle数据库的连接和数据操作。 6. **ODP.NET_Managed121020**: 这可能是ODP.NET Managed的一个特定...
4. **odp.net**:这一部分可能包含了ODP.NET的DLL文件和其他相关库,这些文件是.NET应用程序与Oracle数据库通信的核心组件。开发者会在项目中引用这些库来实现数据访问功能。 5. **network**:这部分可能涉及网络...
ODP.NET(Oracle Data Provider for .NET)是Oracle公司为.NET开发者提供的一款全面的数据访问组件,主要用于连接和操作Oracle数据库。在64位系统中,你需要使用对应的64位版本的ODP.NET驱动,以确保应用程序能正确...
总的来说,《Pro ODP.NET for Oracle Database 11g》这本书详细介绍了如何使用ODP.NET开发高效、可靠的Oracle数据库应用,涵盖了从基础的数据库连接到复杂的PL/SQL调用、事务管理和性能优化等多个方面,对于.NET...
ODAC(Oracle Data Access Components)则是一个更广泛的组件集,它包括ODP.NET以及其他与Oracle数据库交互所需的各种库和工具。ODAC122cR1版本中的“c”可能表示这是一个特定的修正版或更新,旨在修复已知问题,...
这个压缩包包含了两个版本,分别对应于32位(X86)和64位(X64)操作系统:ODP.NET_Managed_ODAC122cR1-X86.zip和ODP.NET_Managed_ODAC122cR1-X64.zip。 Oracle Data Provider for .NET (ODP.NET) 是Oracle的官方...
9. odp.net4和odp.net20:这两个目录可能分别包含适用于.NET Framework 4.x和.NET Framework 2.0的ODP.NET库文件,开发者可以根据项目需求选择合适的版本引用。 在使用ODP.NET Unmanaged 19.10 Xcopy x64时,开发者...
1. **高性能**:ODP.NET通过利用Oracle数据库的高级特性(如连接合并、分区和并行查询)来优化性能。 2. **类型映射**:提供强大的类型映射支持,确保.NET数据类型与Oracle数据类型的准确转换。 3. **无缝集成**:与...
描述中的“Oracle数据访问组件(ODAC)”进一步扩展了ODP.NET的概念,它是一套完整的Oracle数据访问解决方案,包括ODP.NET、Oracle Developer Tools for Visual Studio以及一些其他配套工具和服务。对于“于Visual ...
.net 连接 Oracle 的利器,不再需要客户端, 有这几个dll即可。 由于版本众多, 提取了一些公共文件, 请按说明文件把dll再组织一下…… 相关文章: http://blog.csdn.net/yenange/article/details/12198829 ...
10. **版本兼容性**: 虽然Oracle 11g的ODP.NET可以连接到更高版本的Oracle数据库,但某些特定功能可能只在新版本中提供,因此升级ODP.NET可能带来额外的兼容性和性能优势。 理解并熟练应用这些知识点,将使你能够...
ADO.NET和ODP.NET是两种在.NET环境中与数据库交互的重要技术。这个实例教程,特别是针对初学者,将深入探讨这两个框架的使用,并通过一个实用的三层架构案例来演示其功能和应用。 首先,ADO.NET(ActiveX Data ...
在事务处理方面,ODP.NET支持ACID(原子性、一致性、隔离性和持久性)特性,可以利用OracleConnection的BeginTransaction、Commit和Rollback方法来控制事务。例如: ```csharp conn.BeginTransaction(); try { // ...
本书不仅介绍了ODP.NET的基本概念和技术细节,还包含了一系列实际案例和最佳实践,帮助开发者更好地理解和应用这些技术。例如: - **连接字符串配置**:介绍如何正确配置ODP.NET的连接字符串,确保与Oracle数据库的...
此外,ODP.NET Managed Driver还提供了性能优化和高级特性,如连接池、多线程支持和异步操作,以提高应用程序的效率和响应速度。 总之,ODP.NET Managed ODAC12cR4是Oracle为.NET平台提供的一个关键组件,它使得...
ODP.NET是Oracle专门为.NET Framework设计的数据提供程序,它提供了对Oracle数据库的原生支持,具备高性能、低级访问和高级功能,如PL/SQL块执行、游标、事务管理和复杂数据类型处理。通过ODP.NET,开发者可以直接...
ODP.net 是 Oracle 提供的数据库访问类库,其功能和效率上都有所保证。在 .net 中使用 ODP.net 访问 Oracle 数据库可以不安装 Oracle 客户端,直接拷贝即可使用。下面将详细介绍如何在 .net 中使用 ODP.net 访问 ...
此外,如果你在64位系统上运行32位应用,记得配置项目以使用32位运行时,或者反之亦然,因为ODP.NET有32位和64位两种版本。 总结来说,通过VS2010使用ODP.NET连接Oracle 11g,主要涉及到安装Oracle数据访问组件,...
相比传统的`Data.OracleClient`组件,ODP.NET在性能、稳定性和功能上都有显著的优势。 1. **安装与配置** 在使用ODP.NET前,首先需要安装Oracle数据访问组件,通常通过NuGet包管理器或手动下载Oracle Data Access ...
使用了,ODP.NET 方式链接数据库,只要把Oracle.ManagedDataAccess.dll引入取代以前的Oracle.DataAccess.dll即可。 这种方式也是oracle公司提供的,稳定性要比之前那种更好,而且也是免安装客户端的,目前还没测试...