`
tyny
  • 浏览: 75595 次
  • 性别: Icon_minigender_1
  • 来自: 黄冈
社区版块
存档分类
最新评论

ODP.NET和TransactionScope

 
阅读更多

微软提供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_Managed121020.zip

    通常,它会包含ODP.NET的数据提供者组件和其他必要的DLL文件,这些文件在运行时被.NET应用程序引用,以实现与Oracle数据库的连接和数据操作。 6. **ODP.NET_Managed121020**: 这可能是ODP.NET Managed的一个特定...

    ODP.NET_Managed_ODAC122cR1

    4. **odp.net**:这一部分可能包含了ODP.NET的DLL文件和其他相关库,这些文件是.NET应用程序与Oracle数据库通信的核心组件。开发者会在项目中引用这些库来实现数据访问功能。 5. **network**:这部分可能涉及网络...

    Pro ODP.NET for Oracle Database 11g

    总的来说,《Pro ODP.NET for Oracle Database 11g》这本书详细介绍了如何使用ODP.NET开发高效、可靠的Oracle数据库应用,涵盖了从基础的数据库连接到复杂的PL/SQL调用、事务管理和性能优化等多个方面,对于.NET...

    odp.net(64位)驱动程序

    ODP.NET(Oracle Data Provider for .NET)是Oracle公司为.NET开发者提供的一款全面的数据访问组件,主要用于连接和操作Oracle数据库。在64位系统中,你需要使用对应的64位版本的ODP.NET驱动,以确保应用程序能正确...

    ODP.NET_Managed_ODAC122cR1新版.rar

    ODAC(Oracle Data Access Components)则是一个更广泛的组件集,它包括ODP.NET以及其他与Oracle数据库交互所需的各种库和工具。ODAC122cR1版本中的“c”可能表示这是一个特定的修正版或更新,旨在修复已知问题,...

    ODP.NET_Managed_ODAC122cR1-X86 -X64.rar

    这个压缩包包含了两个版本,分别对应于32位(X86)和64位(X64)操作系统:ODP.NET_Managed_ODAC122cR1-X86.zip和ODP.NET_Managed_ODAC122cR1-X64.zip。 Oracle Data Provider for .NET (ODP.NET) 是Oracle的官方...

    ODP.NET Unmanaged 19.10 Xcopy x64

    9. odp.net4和odp.net20:这两个目录可能分别包含适用于.NET Framework 4.x和.NET Framework 2.0的ODP.NET库文件,开发者可以根据项目需求选择合适的版本引用。 在使用ODP.NET Unmanaged 19.10 Xcopy x64时,开发者...

    ODP.NET (Oracle帮助文档)

    1. **高性能**:ODP.NET通过利用Oracle数据库的高级特性(如连接合并、分区和并行查询)来优化性能。 2. **类型映射**:提供强大的类型映射支持,确保.NET数据类型与Oracle数据类型的准确转换。 3. **无缝集成**:与...

    ODP.NET开发工具包,免安装客户端访问

    描述中的“Oracle数据访问组件(ODAC)”进一步扩展了ODP.NET的概念,它是一套完整的Oracle数据访问解决方案,包括ODP.NET、Oracle Developer Tools for Visual Studio以及一些其他配套工具和服务。对于“于Visual ...

    odp.net 免安装 dll 全套 [包括32位(2.0,4.0),64位(2.0,4.0)]

    .net 连接 Oracle 的利器,不再需要客户端, 有这几个dll即可。 由于版本众多, 提取了一些公共文件, 请按说明文件把dll再组织一下…… 相关文章: http://blog.csdn.net/yenange/article/details/12198829 ...

    C#连接Oracle11gX64无需安装客户端必须的文件ODP.NET

    10. **版本兼容性**: 虽然Oracle 11g的ODP.NET可以连接到更高版本的Oracle数据库,但某些特定功能可能只在新版本中提供,因此升级ODP.NET可能带来额外的兼容性和性能优势。 理解并熟练应用这些知识点,将使你能够...

    ADO.net ODP.net 实例 教程

    ADO.NET和ODP.NET是两种在.NET环境中与数据库交互的重要技术。这个实例教程,特别是针对初学者,将深入探讨这两个框架的使用,并通过一个实用的三层架构案例来演示其功能和应用。 首先,ADO.NET(ActiveX Data ...

    ODP.NET—DLL

    在事务处理方面,ODP.NET支持ACID(原子性、一致性、隔离性和持久性)特性,可以利用OracleConnection的BeginTransaction、Commit和Rollback方法来控制事务。例如: ```csharp conn.BeginTransaction(); try { // ...

    ODP.NET Developer's Guide

    本书不仅介绍了ODP.NET的基本概念和技术细节,还包含了一系列实际案例和最佳实践,帮助开发者更好地理解和应用这些技术。例如: - **连接字符串配置**:介绍如何正确配置ODP.NET的连接字符串,确保与Oracle数据库的...

    ODP.NET_Managed_ODAC12cR4.zip

    此外,ODP.NET Managed Driver还提供了性能优化和高级特性,如连接池、多线程支持和异步操作,以提高应用程序的效率和响应速度。 总之,ODP.NET Managed ODAC12cR4是Oracle为.NET平台提供的一个关键组件,它使得...

    ODP.NET_Managed_ODAC12cR4

    ODP.NET是Oracle专门为.NET Framework设计的数据提供程序,它提供了对Oracle数据库的原生支持,具备高性能、低级访问和高级功能,如PL/SQL块执行、游标、事务管理和复杂数据类型处理。通过ODP.NET,开发者可以直接...

    net中使用ODP.net访问Oracle数据库(无客户端部署方法)

    ODP.net 是 Oracle 提供的数据库访问类库,其功能和效率上都有所保证。在 .net 中使用 ODP.net 访问 Oracle 数据库可以不安装 Oracle 客户端,直接拷贝即可使用。下面将详细介绍如何在 .net 中使用 ODP.net 访问 ...

    VS2010通过ODP.NET连接Oracol 11g所需DLL文件

    此外,如果你在64位系统上运行32位应用,记得配置项目以使用32位运行时,或者反之亦然,因为ODP.NET有32位和64位两种版本。 总结来说,通过VS2010使用ODP.NET连接Oracle 11g,主要涉及到安装Oracle数据访问组件,...

    ODP.net 操作类

    相比传统的`Data.OracleClient`组件,ODP.NET在性能、稳定性和功能上都有显著的优势。 1. **安装与配置** 在使用ODP.NET前,首先需要安装Oracle数据访问组件,通常通过NuGet包管理器或手动下载Oracle Data Access ...

    ODP.NET 方式链接oracle数据库的Oracle.ManagedDataAccess.dll文件取代Oracle.DataAccess.dll

    使用了,ODP.NET 方式链接数据库,只要把Oracle.ManagedDataAccess.dll引入取代以前的Oracle.DataAccess.dll即可。 这种方式也是oracle公司提供的,稳定性要比之前那种更好,而且也是免安装客户端的,目前还没测试...

Global site tag (gtag.js) - Google Analytics