powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Подключение к БД Oracle из программы на С#
34 сообщений из 34, показаны все 2 страниц
Подключение к БД Oracle из программы на С#
    #37737300
tociacla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Мой вопрос, наверное, многим покажется глупым, но прошу проявить терпение к новичку. Я начинающий разработчик, опыта пока слишком мало. Очень нужно подключиться из программы на С# к БД Oracle, но нигде не могу найти информации, как это сделать... Может кто-нибудь предложить простой и, главное, полный пример? Подключение, чтение из БД и запись в нее. Спасибо!
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #37737905
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tociacla,

Например (чтение сделано на скорую руку, наверняка можно умнее):
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
using Oracle.DataAccess.Client;

        /// <summary>
        /// Создаёт объект соединения с БД Oracle
        /// </summary>
        /// <param name="listener">Сервис связи</param>
        /// <param name="login">Логин в БД</param>
        /// <param name="password">Пароль для заданного логина</param>
        /// <param name="host">Сервер БД</param>
        /// <param name="port">Порт сервера для доступа к БД</param>
        public OracleConnection(string listener, string login, string password, string host, string port)
        {
            m_authorizationString = login + "/" + password + "@" + listener;
            //m_connection = new Oracle.DataAccess.Client.OracleConnection("User Id=" + login + ";Password=" + password + "; Data Source=" + listener + ";" );
            m_connection = new Oracle.DataAccess.Client.OracleConnection("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)" +
                "(HOST=" + host + ")(PORT=" + port + ")))" + "(CONNECT_DATA=(SERVER=DEDICATED)(SID=" + listener + ")));" +
                "User Id=" + login + ";Password=" + password + ";");
            //Log.AppLog.LogString("Connecting to DB with credentials " + m_authorizationString);
            try
            {
                m_connection.Open();
            }
            catch (Oracle.DataAccess.Client.OracleException e)
            {
                Log.AppLog.LogString("Connection failed - " + e.Message);
                //Console.WriteLine(e.Message);
            }
        }

        /// <summary>
        /// Выполнить одиночный запрос
        /// </summary>
        /// <param name="query">Строка SQL-запроса</param>
        /// <returns>Признак успешного выполнения</returns>
        public bool PerformQuery(string query)
        {
            try
            {
                if (query.Length > 4000) return false;
                OracleCommand command = m_connection.CreateCommand();
                command.CommandText = query;
                command.ExecuteScalar();
                command.Dispose();
                return true;
            }
            catch (System.Exception ex)
            {
                Log.AppLog.LogString("Error in query: \"" + ex.Message + "\" - with query " + query);
                return false;
            }
        }

        /// <summary>
        /// Чтение данных из таблицы
        /// </summary>
        /// <param name="query">Запрос</param>
        /// <param name="fields">Поля в результате запроса</param>
        /// <returns>Список наборов значений полей</returns>
        public List<string[]> QueryData(string query, params string[] fields) {
            OracleCommand command = m_connection.CreateCommand();
            command.CommandText = query;

            OracleDataReader reader = command.ExecuteReader();
            List<string[]> ret = new List<string[]>();
            while (reader.Read()) {
                string[] read = new string[fields.Length];
                for (int i = 0; i < fields.Length; ++i) read[i] = reader[fields[i]].ToString();
                ret.Add(read);
            }
            return ret;
        }
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #37738524
tociacla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Abstraction, огромное спасибо! Буду разбираться.

А объясните еще пожалуйста: как происходит соединение на физическом уровне? Т.е. а) когда я пишу БД в Oracle, где именно создаются файлы этой БД, как они называются? б) когда происходит соединение, каким именно образом Visual Studio находит эти самые файлы? в) необходимо ли копировать файлы базы данных в папку с программой? г) если в конечном итоге требуется передать программу другому пользователю, то следует ли скопировать файлы БД? при каких условия другой пользователь сможет, запустив программу, успешно работать через эту программу с базой данных? Спасибо!
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #37738552
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tociaclaAbstraction, огромное спасибо! Буду разбираться.

А объясните еще пожалуйста: как происходит соединение на физическом уровне? Т.е. а) когда я пишу БД в Oracle, где именно создаются файлы этой БД, как они называются? б) когда происходит соединение, каким именно образом Visual Studio находит эти самые файлы? в) необходимо ли копировать файлы базы данных в папку с программой? г) если в конечном итоге требуется передать программу другому пользователю, то следует ли скопировать файлы БД? при каких условия другой пользователь сможет, запустив программу, успешно работать через эту программу с базой данных? Спасибо!
Ой.
а) Там, куда поставили Oracle. Называются так, как сочтёт нужным Oracle.
б) Когда происходит соединение, Visual Studio категорически не при делах. Более того, написанная клиентская программа тоже категорически не при делах. Есть сервис Oracle, он слушает запросы и сам разбирается, чего с ними дальше делать. То, что Вы этого не понимаете, как минимум странно.
в,г) То, что написано, опирается на сборку Oracle.DataAccess. Для работы достаточно установки соответствующей версии Oracle Client на машину пользователя и наличия (правильной версии!) Oracle.DataAccess.dll в папке с программой. Лично у меня попытки ослабить эти требования до установки у клиента только Instant Client с треском провалились.
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #37738564
tociacla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AbstractionТо, что Вы этого не понимаете, как минимум странно
Согласен. В глазах профессионалов я выгляжу идиотом. Но оправдываться бессмысленно, т.к. я уже сказал, что новичок.

Abstractionналичия (правильной версии!) Oracle.DataAccess.dll в папке с программой
Что имеется в виду? Какой файл можно считать правильным и где его взять? Извините за дебильные вопросы...
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #37738571
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tociaclaЧто имеется в виду? Какой файл можно считать правильным и где его взять? Извините за дебильные вопросы...
ODAC (Oracle Data Access Components) для Вашей версии Oracle. Брать с сайта Oracle.
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #37738575
tociacla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Abstraction,

спасибо за терпение! Буду разбираться
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #37747631
tociacla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Abstraction, добрый день! Пожалуйста, скажите еще: переменной fields нужно самому присвоить значение или, как и listener, login, password, host, port, взять из какого-то оракловского файла?
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #37747819
tociacla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ведь по сути дела fields - это формальный параметр метода QueryData. Я не понимаю, что передавать этому методу при вызове
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #37748033
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tociacla,

Нет, из оракловских файлов ничего брать не надо. listener, login, password, host, port - это параметры Вашей БД. fields - названия полей; скажем,
Код: c#
1.
2.
3.
4.
5.
OracleConnection conn = new OracleConnection("testbase", "scott", "tiger", "192.168.1.5", "1521");
List<string[]> names = conn.QueryData("SELECT NAME, DATE FROM MYTABLE WHERE ID>150", "NAME", "DATE");
foreach(string[] record in names){
  Console.WriteLine("Name is " + record[0]);
}
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #37749211
tociacla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Abstraction,
метод QueryData взял у Вас без изменений. Далее вызываю метод при загрузке формы и пытаюсь отобразить результат запроса в dataGridView:

Код: c#
1.
2.
3.
4.
5.
6.
private void Form1_Load(object sender, EventArgs e)
        {
            OracleConnection("XE", ".", ".", ".", ".");
            List<string[]> data = QueryData("SELECT ...", ".", ".", ..., ".");
            dataGridView1.DataSource = data;
        }



В итоге получаю нечто странное:


Можете объяснить, откуда это нечто?
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #37749213
tociacla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И как сделать так, чтобы отображались столбцы из моей базы данных?
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #37749495
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tociacla,

А это DataGridView в действии. Компонент видит, что ему передали набор объектов (List<string[]>). Он берёт объекты (типа string[]), ищет у них публичные свойства, по названиям этих свойств именует столбцы и отображает по объекту в строке. В данном случае каждый объект - это string[] с Length=14 (т.е. в массиве 14 полей), Rank=1 (массив, натурально, одномерный), IsReadOnly=false и т.д.

Как сделать - вопрос интересный. Когда мне надо было отображать данные в dataGridView, я создавал специальный класс, с нужными мне публичными полями и передавал ему список элементов этого класса (заодно и сортировку по столбцам делал). Но, как понимаю, теоретически DataGridView может отображать данные из БД "напрямую". Как? - не знаю, у меня ничего путного (с Oracle, во всяком случае) не получилось. С другой стороны, не особенно и копал.
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #37749635
tociacla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я, похоже, могу вывести результат запроса в dataGridView при помощи конструктора и адаптера таблиц.... Но считаю, что лучше самому писать код. К тому же мне нужно будет еще и записывать потом в базу данных значения, введенные и dataGridView.
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #37749636
tociacla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Abstraction,

не могли бы Вы привести пример класса, о котором писали? Спасибо!

Модератор: Тема перенесена из форума "Программирование".
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #37750128
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tociacla,

Например:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
class Person{
  public string Name {get; private set;}
  public string Date {get; private set;}
  public string Comment {get; private set;}

  public Person(string name, string date, string comment){Name = name; Date = date; Comment = comment;}
}
//...
OracleConnection conn = new OracleConnection("testbase", "scott", "tiger", "192.168.1.5", "1521");
List<string[]> names = conn.QueryData("SELECT NAME, DATE FROM MYTABLE WHERE ID>150", "NAME", "DATE");
IEnumerable<Person> persons = names.Select(record => new Person(record[0], record[1], "none"));
dataGridViewPeople.DataSource = persons;

В dataGridViewPeople появятся записи со столбцами "Name", "Date" и "Comment".
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #37750278
Lexxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abstraction,

Пользуясь случаем хочу спросить, вот это http://msdn.microsoft.com/ru-ru/library/system.data.oracleclient.aspx уже совсем устаревшее г-но мамонта и его не стоит использовать даже в простейших случаях или еще на что-то сгодится?
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #37750312
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lexxxxx,

Если честно, понятия не имею. Попытка наладить нормальный контакт с БД Oracle сопровождалась достаточно большим количеством гипотез "какого лешего этот вариант не работает", по сию пору не знаю, какие из них были правильными. Поскольку задача была в общем-то второстепенной, то первый рабочий вариант (который передаёт данные и с разумным количеством геморроя переносится на другую машину) меня устроил.
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #37752681
tociacla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Abstractiontociacla,

Например:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
class Person{
  public string Name {get; private set;}
  public string Date {get; private set;}
  public string Comment {get; private set;}

  public Person(string name, string date, string comment){Name = name; Date = date; Comment = comment;}
}
//...
OracleConnection conn = new OracleConnection("testbase", "scott", "tiger", "192.168.1.5", "1521");
List<string[]> names = conn.QueryData("SELECT NAME, DATE FROM MYTABLE WHERE ID>150", "NAME", "DATE");
IEnumerable<Person> persons = names.Select(record => new Person(record[0], record[1], "none"));
dataGridViewPeople.DataSource = persons;

В dataGridViewPeople появятся записи со столбцами "Name", "Date" и "Comment".

Abstraction, не появилось...
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #37754397
tociacla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Abstraction,

Все работает. Спасибо!
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #37755123
pyroman69
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #37773095
tociacla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pyroman69,

Спасибо!
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #38049551
наш человек в гаване
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могли бы вы ответить на несколько вопросов:

1. Насколько целесообразно использовать
Код: c#
1.
2.
using Oracle.ManagedDataAccess.Client;
using Oracle.ManagedDataAccess.Types;


вместо
Код: c#
1.
using Oracle.DataAccess.Client;



2. Можно ли отдельно скачать одну библиотеку Oracle.DataAccess.Client?;

3. Я скачал с сайта Oracle ODAC112012.
Я не вижу в составе дистрибутива Oracle.DataAccess.dll

спасибо!
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #38049722
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наш человек в гаванеМогли бы вы ответить на несколько вопросов:

1. Насколько целесообразно использовать
Код: c#
1.
2.
using Oracle.ManagedDataAccess.Client;
using Oracle.ManagedDataAccess.Types;


вместо
Код: c#
1.
using Oracle.DataAccess.Client;


Если Вы про вот это Oracle Data Provider for .NET, Managed Driver Beta 11.2.0.3.50 , то по состоянию на сейчас разве что для ознакомительных и тестовых целей: beta - и этим все сказано... А у Oracle даже релизы содержат много мелких, но достаточно некомфортных багов...
наш человек в гаване2. Можно ли отдельно скачать одну библиотеку Oracle.DataAccess.Client?;
А смысл? Без инстант клиента все равно не будет работать...

Если просто не хочется качать и устанавливать "полного клиента", всегда можно скачать "xcopy-deployment" комплект - его можно разворачивать вместе с приложением.
наш человек в гаване3. Я скачал с сайта Oracle ODAC112012.
Я не вижу в составе дистрибутива Oracle.DataAccess.dll
спасибо!Во-первых, чего такую "древнюю" версию используете?
"На сейчас" актуальна версия ODAC1120320 - на релиза на 3 "по-свежее" будет...

Во-вторых, если Вам нужна (по каким-то причинам) конкретно эта dll-ка, скачайте "xcopy-deployment" - в полученом архиве есть подкаталоги odp.net20 и odp.net4 - там есть...
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #38050536
наш человек в гаване
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mv , спасибо за развёрнутый ответ!

Скачал и установил клиента с ODP.NET
Создаю в C# windows forms приложение для работы с БД Oracle.
Подключил Oracle DataAccess в References.

На форме создал кнопку и метку. Идея проста: нажать на кнопку и по событию нажатия
на кнопку вывести результат в метку.

Вот код:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Oracle.DataAccess.Client; // ODP.NET Oracle managed provider
using Oracle.DataAccess.Types; 

namespace oraspec1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string oradb = "Data Source=BI_TEST;User Id=scott;Password=tiger;";
            OracleConnection conn = new OracleConnection(oradb);  // C#
            conn.Open();
            OracleCommand cmd = new OracleCommand();
            cmd.Connection = conn;
            cmd.CommandText = "select id, code, name from c_objects c where c.id =658570587;";
            cmd.CommandType = CommandType.Text;
            OracleDataReader dr = cmd.ExecuteReader();
            dr.Read();
            label1.Text = dr.GetString(0);
            conn.Dispose();
        }
    }
}




В результате запуска получаю ошибку Oracle.DataAccess.Client.OracleException ORA-00911: неверный символ:


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
Oracle.DataAccess.Client.OracleException ORA-00911: неверный символ    at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, 
IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)
   at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, 
String procedure, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, Boolean bCheck)
   at Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean requery, 
Boolean fillRequest, CommandBehavior behavior)
   at Oracle.DataAccess.Client.OracleCommand.ExecuteReader()
   at oraspec1.Form1.button1_Click(Object sender, EventArgs e) in C:\C#\Projects\oraspec1\oraspec1\Form1.cs:line 30
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)



подскажите, как нужно правильно написать?
спасибо!
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #38050569
наш человек в гаване
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
компилятору не нравится почему-то строка, он на неё указывает

Код: c#
1.
 OracleDataReader dr = cmd.ExecuteReader();



описание для ошибки:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
ORA-00911
invalid character

Cause: identifiers may not start with any ASCII character other than letters and numbers. 
$#_ are also allowed after the first character. Identifiers enclosed by doublequotes may contain 
any character other than a doublequote. Alternative quotes (q'#...#') cannot use spaces, 
tabs, or carriage returns as delimiters. For all other contexts, consult the SQL Language Reference Manual.
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #38051060
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наш человек в гаванекомпилятору не нравится почему-то строка, он на неё указывает

Код: c#
1.
 OracleDataReader dr = cmd.ExecuteReader();


run-time ошибка к компилятору отношения не имеет.
наш человек в гаванеописание для ошибки:

Код: plsql
1.
2.
ORA-00911
invalid character


Уберите из текста запроса точку с запятойю Должно быть так:
Код: c#
1.
cmd.CommandText = "select id, code, name from c_objects c where c.id =658570587";
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #38051110
наш человек в гаване
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mv :
спасибо, помогло!

а могли бы вкратце пояснить почему через tnsnames.ora коннект работает быстрее, чем напрямую (direct соединение)?
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #38051149
наш человек в гаване
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВо-первых, чего такую "древнюю" версию используете?
"На сейчас" актуальна версия ODAC1120320 - на релиза на 3 "по-свежее" будет...
у меня БД Oracle 11.2.0.1
но, если версия ODAC будет выше, чем версия БД ничего страшного не произойдёт, работать оно будет?
т.е. версия БД может быть к примеру 9i, а ODAC c InstantClient 11.2.0.3 и работать будет нормально?
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #38051198
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наш человек в гаванеа могли бы вкратце пояснить почему через tnsnames.ora коннект работает быстрее, чем напрямую (direct соединение)?По идее вроде бы не должно, но большего не скажу: с БД на Oracle я "общаюсь" как разработчик, а не администратор - а этот вопрос является непосредственно администраторским.
Если он Вас сильно волнует, задайте его в "более специализированном" месте . Возможно, Вам там ответят.
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #38051206
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наш человек в гаванеу меня БД Oracle 11.2.0.1
но, если версия ODAC будет выше, чем версия БД ничего страшного не произойдёт, работать оно будет?
т.е. версия БД может быть к примеру 9i, а ODAC c InstantClient 11.2.0.3 и работать будет нормально?Ничего "страшного" не будет. Зато "в плюсах" частично пофиксеные "старые" баги + новые фичи, но и "в минусах" не до конца вычищеные "старые" + некоторое количество "новых" багов...
Перед использованием в "рабочем проекте", соответственно, необходимо проверять в "изолированной среде" как работает новая версия - стандартное требование для любого нового продукта.
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #38051209
наш человек в гаване
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mv :

Могли бы вы ещё показать на примере использования метода dr.GetOracleDate()

Я хочу в метку label1 передать значение GetOracleDate, но не совсем понимаю как это сделать.
Гугл мне сказал, что аргументом для GetOracleDate является int

Код: plsql
1.
2.
3.
public OracleDateTime GetOracleDateTime(
	int i
)



самый первый вопрос, который у меня появляется, какое значение типа int подставлять в качестве аргумента?
и покажите на примере, пожалуйста.
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #38051250
наш человек в гаване
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mv:

у меня следующая проблема:
хочу создать несколько меток (label1, label2,..., label N), и в кажду метку передавать
различный тип данных. Например, в метку label1 буду передавать тип данных varchar2 из БД,
в label2 тип number, а в label3 тип date. Как это организовать?
я посмотрел, что в visual studio есть методы? (правильно назвал?):
GetString
GetChar
GetDateTime
я не понимаю какие аргументы подставлять, вернее какое значение для этих аргументов.
так я не совсем понимаю, почему GetString принимает значение 0, а не 1, например?
Код: c#
1.
 richTextBox1.Text = dr.GetString(0);





этим кодом я пытался в текстовое поле вставить результат первого селекта, а в метку передать текущее время
из БД. но у меня НЕ получилось.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
string oradb = "Data Source=BI_TEST;User Id=scott;Password=tiger;";
            OracleConnection conn = new OracleConnection(oradb);  // C#
            conn.Open();
            OracleCommand cmd = new OracleCommand();
            cmd.Connection = conn;
            cmd.CommandText = "select name from c_objects where id=9205";
            cmd.CommandType = CommandType.Text;
            OracleDataReader dr = cmd.ExecuteReader();
            dr.Read();
            richTextBox1.Text = dr.GetString(0);
            
            //public OracleDateTime GetOracleDateTime(1);
            //label1.Text = dr.GetOracleDate(0);

            OracleCommand cmd2 = new OracleCommand();
            cmd2.Connection = conn;
            cmd2.CommandText = "SELECT TO_CHAR(CURRENT_DATE, 'DD-MON-YYYY HH:MI') FROM DUAL";
            cmd2.CommandType = CommandType.Text;
            OracleDataReader dr2 = cmd.ExecuteReader();
            dr2.Read();
            //richTextBox1.Text = d2.GetString(0);
            label1.Text = dr2.GetString(0);

            conn.Dispose();
...
Рейтинг: 0 / 0
Подключение к БД Oracle из программы на С#
    #38051265
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наш человек в гаване sphinx_mv :
Могли бы вы ещё показать на примере использования метода dr.GetOracleDate()
...
самый первый вопрос, который у меня появляется, какое значение типа int подставлять в качестве аргумента?
и покажите на примере, пожалуйста.:)
Читать Oracle Data Provider for .NET Developer's Guide ...
Подробнее про OracleDataReader Class ...
Примеры "на любой вкус и цвет" есть в каталоге, куда Вы устанавливали ODAC (подкаталог ODP.NET)...
...
Рейтинг: 0 / 0
34 сообщений из 34, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Подключение к БД Oracle из программы на С#
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]