Не удается подключиться к Oracle в C # - PullRequest
1 голос
/ 17 августа 2011

Я пытаюсь подключиться к Oracle в 32-битном консольном приложении.Я получаю следующее erorr.Код (за исключением изменения имени хоста, имени пользователя и пароля) приведен ниже.Это простой двухфункциональный проект.

Любая помощь будет оценена.

Я использую C # в Visual Studion 2010 Premium и Oracle 10g.Я могу подключиться к базе данных с помощью Oracle SQL Developer, указав информацию в строке подключения.


--------------- ToString -------------------------- --Oracle.DataAccess.Client.OracleException в Oracle.DataAccess.Client.OracleException.HandleErrorHelper (Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, процедура String) в Oracle.DataAccess.Client.OracleException.HandleError (Int32 errCode, Соединение с Oracle, IntPtr opsErrCtx, Object src) в Oracle.DataAccess.Client.OracleConnection.Opplication .Opplication.GetConnection () в c: \ users \ maholt \ Documents \ visual studio 2010 \ Projects \ ConsoleApplication1 \ ConsoleApplication1 \ Program.cs: строка 61

---------------Сообщение ---------------------------


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Oracle.DataAccess.Client;

namespace ConsoleApplication1
{
    class Program
    {
        static OracleConnection conn;

        static void Main(string[] args)
        {
            OracleConnection connC = GetConnection();

            conn = connC;
            simpleQuery();
            Console.WriteLine("DONE");
        }

        public static void simpleQuery()
        {
            OracleCommand cmd = new OracleCommand("select count(*) as total from console.client");

            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;

            try
            {
                cmd.Connection.Open();
                OracleDataReader reader = cmd.ExecuteReader();

                while (reader.Read())
                {
                    Console.WriteLine(Convert.ToString(reader["total"]));
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                cmd.Dispose();
            }
        }

        public static OracleConnection GetConnection()
        {
            Oracle.DataAccess.Client.OracleConnection rtn = null;
            try
            {
                string connstr = "Data Source=//10.10.10.10:1521/PRD2_OLTP;User Id=user; Password=pass;";

                rtn = new Oracle.DataAccess.Client.OracleConnection(connstr);

                if (rtn.State != System.Data.ConnectionState.Open)
                {
                    rtn.Open();
                }
            }
            catch (Exception ee)
            {
                Console.WriteLine("-------------------------------------------------");
                Console.WriteLine("---------------ToString--------------------------");
                Console.WriteLine("--" + ee.ToString());
                Console.WriteLine("---------------Message---------------------------");
                Console.WriteLine("--" + ee.Message);
                Console.WriteLine("-------------------------------------------------");
            }

            return (rtn);
        }

    }
}

Ответы [ 2 ]

1 голос
/ 23 августа 2011

SQL Developer эффективно использует соединение JDBC ... так что оно не совсем сопоставимо с тем, что происходит в .NET: - (

Относительно совместимости версий Oracle и .NET - я обнаружил, что это довольно проблематично, посколькуу клиентов не всегда есть возможность обновления в соответствии с планами Oracle ...

После исследования некоторых я перешел на использование компонентов Devart - поддерживаю все от Oracle 7.3 до 11gR2 в.NET 2 работает с 32- и 64-разрядными версиями и поставляется с «опцией прямого режима», что означает, что в случае необходимости я могу запустить свое приложение без установки на компьютере клиента Oracle ... не аффилированного, а просто счастливого клиента ...

0 голосов
/ 23 августа 2011

Первое - Oracle не поддерживает 10g с .net 4.0.Вы должны использовать 11.2.0.2 или выше, чтобы быть совместимым с поддерживаемыми версиями Oracle.

Второе. Проблема в том, что вы, вероятно, неправильно установили ODP.Net.Это может означать, что он не установлен, он был установлен во второй экземпляр или не удалось скопировать или несколько файлов во время установки.

У меня есть несколько сообщений в блоге об этих элементах вместе со ссылкой на некоторые приложения для тестирования подключений, которые я написал.Не стесняйтесь использовать их.

https://tsells.wordpress.com/category/oracle/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...