Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2011, 12:26   #1
luna662
 
Регистрация: 11.10.2008
Сообщений: 3
Вопрос C#, Oracle и все, все, все...

Народ, нужна помощь. Вообщем, есть база Oracle, хотелось бы клиент написать на C#. В интернете примеров много, но у меня все это дело не работает. Для начала бы хотелось просто подсоединиться к базе
Код:
using System.Data;
using System.Data.OracleClient;
using System.Data.OleDb;
using System.Data.Odbc;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            OleDbConnection cn = new OleDbConnection();
            cn.ConnectionString = "Provider=MSDASQL.1;" +
            "Integrated Security=yes;" +
            "Persist Security Info=False;" +
            "Initial Catalog=C:/Users/.../Debug;" +
            "Data Source=dBASE Files;" +
            "User ID=User_name;"+
            "Password=user_password;";
   	}
    }
}
ConnectionString брал из созданного файла .udl, там без проблем все конектится. На C# же вылетает ошибка
Поставщик OLEDB Microsoft для драйверов ODBC (MSDASQL) не поддерживается поставщиком OLE DB данных .Net Framework (System.Data.OleDb). Используйте поставщика данных .Net Framework для ODBC (System.Data.Odbc).
Вроде как все разжевано, но ничего не понятно. Все перечисленные библиотеки подключил
luna662 вне форума Ответить с цитированием
Старый 05.05.2011, 16:10   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

можно качнуть и установить ораклового клиента на одаке (ODAC)
он более специализирован
подрубишь к проекту
а дальше коннект с получением данных из запроса в датаадаптер
Код:
......

using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;

......

// здесь свои параметры укажи
string cn = string.Format("User Id={0};Password={1};Data Source={2}", "gUserId", "gPassword", "gDataSource");
string sql = "select sysdate from dual";
				
using (OracleDataAdapter da = new OracleDataAdapter(sql, cn))
{
       //blablabla
}
soleil@mmc вне форума Ответить с цитированием
Старый 05.05.2011, 16:28   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

soleil@mmc +1

мне товарищ тоже самое (почти) скинул на мессенджер.
цитирую.

Цитата:
Надо поставить клиента Oracle.
там будет нужная сборка (DLL).

просто включаешь в проект эту сборку

C:\oraclexe\app\oracle\product\10.2 .0\server\BIN\Oracle.DataAccess.dll

а дальше
using Oracle.DataAccess.Client;
,,,,
connection = new OracleConnection();

ну и всё как обычно)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.05.2011, 17:11   #4
luna662
 
Регистрация: 11.10.2008
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
soleil@mmc +1

мне товарищ тоже самое (почти) скинул на мессенджер.
цитирую.
Изменил код под OracleClient:
Код:
using System.Data;
using System.Data.OracleClient;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            OracleConnection cn = new OracleConnection();
            cn.ConnectionString = "Integrated Security=yes;" +
            "Persist Security Info=False;" +
            "Data Source=dBASE Files;" +
            "User ID=User_name;" +
            "Password=user_password;";
                cn.Open();
        }
    }
}
В итоге, конектится, но не открывается. Вылетает ошибка
для System.Data,OracleClient требуется клиентское программное обеспечение Oracle 8.1.7 или более поздней версии
Хотя на компе стоит Oracle 10g Expess Edition
luna662 вне форума Ответить с цитированием
Старый 05.05.2011, 19:40   #5
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Строку подключения можно посмотреть в файле: tnsnames.ora.
Я, например, подключаюсь так:
Код:
string _ConnectionString =
         @"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.56.121.231)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE)));
          User Id=testuser; Password=12345;";
Added:
P.S. Для подключения можно использовать как вышепредложенные классы из Oracle.DataAccess.Client так и от Microsoft System.Data.OracleClient;
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".

Последний раз редактировалось Daramant; 05.05.2011 в 19:44.
Daramant вне форума Ответить с цитированием
Старый 06.05.2011, 10:28   #6
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от luna662 Посмотреть сообщение
Изменил код под OracleClient:
В итоге, конектится, но не открывается. Вылетает ошибка
для System.Data,OracleClient требуется клиентское программное обеспечение Oracle 8.1.7 или более поздней версии
Хотя на компе стоит Oracle 10g Expess Edition
может я чего не понимаю, но при чем здесь
Цитата:
"Data Source=dBASE Files;" +
?????
у оракла конечно все хранится в *.dbf, но реально этих форматов до фига и коннектиться к нему нужно не напрямую к файлу (этого никто не даст + там еще и своя файловая система с правами доступа), а через листнер - необходимые параметры для коннекта уже приведены
soleil@mmc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Установка XP на SATA и все-все-все Alex Cones Операционные системы общие вопросы 5 16.03.2010 17:07
все слова с нечетным количеством букв подходят для "ёлочной" рекурсии. Все буквы слова расположены в форм no_to Помощь студентам 0 04.01.2010 16:06
Все все о MainMenu Dr.Badnezz Win Api 0 20.09.2008 15:56
в начале все отрицательные, затем все положительные элементы в матрице motaro Паскаль, Turbo Pascal, PascalABC.NET 2 07.03.2008 19:16