Skip to Main Content

ODP.NET

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Get TNSNames path programatically (ODP.NET not Managed) in C#

kiquenetMar 25 2014 — edited Mar 29 2014

Hi,

I use ODP.NET

64-bit ODAC 11.2 Release 3 (11.2.0.2.1) Xcopy for Windows x64

ODAC 11.2 Release 3 (11.2.0.2.1)

(not Managed, too older and new versions installed in several PCs)

64-bit ODAC 12c Release 2 (12.1.0.1.2) for Windows x64

ODAC 12c Release 2 (12.1.0.1.2) and Oracle Developer Tools for Visual Studio

For Oracle.DataAccess (not managed ODP.NET),


how can I get programatically (C#) the TNSNames path the Oracle.DataAccess assembly (OracleConnection class) that I used ?


   [TestMethod]

        public void Version_OracleDataAccess_ODPnet_test()

        {

            var t = typeof(Oracle.DataAccess.Client.OracleConnection);

            TestContext.WriteLine("Assembly Oracle.DataAccess: " + t.Assembly.FullName);

            TestContext.WriteLine("Oracle.DataAccess. Location:  " + (t.Assembly).Location);

            TestContext.WriteLine("Oracle.DataAccess. GlobalAssemblyCache: " + (t.Assembly).GlobalAssemblyCache);

            TestContext.WriteLine("Oracle.DataAccess. AssemblyQualifiedName: " + t.AssemblyQualifiedName);

            TestContext.WriteLine("Oracle.DataAccess. Module.FullyQualifiedName:  " + (t.Module.FullyQualifiedName));

            TestContext.WriteLine("\r\n");

            Assert.IsTrue((t.Assembly).GlobalAssemblyCache, t.Name + " no está en GAC");

            var conectado = false;

            try

            {

                string connstring = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ZZZ.ZZZ.ZZZ.ZZZ)(PORT=1523))" +

      "(CONNECT_DATA=(SID=oas1d)));User Id=XXXX;Password=XXXX;";

                using (var conn = new OracleConnection(connstring))

                {

                    conn.Open();

                    TestContext.WriteLine("Oracle.DataAccess.OracleConnection State: " + conn.State);

                    TestContext.WriteLine("Oracle.DataAccess.OracleConnection ServerVersion: " + conn.ServerVersion);

                    TestContext.WriteLine("Oracle.DataAccess.OracleConnection DataSource: " + conn.DataSource);

                    // For ODP.NET older versions not exists property ServiceName

                    //                   

                    // System.MissingMethodException: Método no encontrado: 'System.String Oracle.DataAccess.Client.OracleConnection.get_ServiceName()'.

                    if (true)

                    {

                        //TestContext.WriteLine("Oracle.DataAccess.OracleConnection ModuleName: " + conn.ModuleName);

                        TestContext.WriteLine("Oracle.DataAccess.OracleConnection ServiceName: " + conn.ServiceName);

                        TestContext.WriteLine("Oracle.DataAccess.OracleConnection InstanceName: " + conn.InstanceName);

                        TestContext.WriteLine("Oracle.DataAccess.OracleConnection HostName: " + conn.HostName);

                        TestContext.WriteLine("Oracle.DataAccess.OracleConnection DatabaseName: " + conn.DatabaseName);

                        TestContext.WriteLine("Oracle.DataAccess.OracleConnection DatabaseDomainName: " + conn.DatabaseDomainName);

                    }

                    Assert.AreEqual(conn.State, ConnectionState.Open, "La conexión no está Open");

                    conectado = true;

                    conn.Close();

                }

                Assert.IsTrue(conectado, "Error en la conexión " + connstring);

            }

            catch (Exception ex)

            {

                Assert.Fail("Error en la conexión. Msg: " + ex.ToString());

            }

        }

thanks

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Apr 26 2014
Added on Mar 25 2014
9 comments
12,944 views