powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Подключение к Oracle из C#
45 сообщений из 45, показаны все 2 страниц
Подключение к Oracle из C#
    #39280453
Karlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Никак не могу сообразить, как правильно реализовать следующее задание:
В проекте 2 формы: Form1 - форма с текстовыми полями "Логин", "Пароль" и "База данных"
и кнопкой "Войти".
Form2 - форма, в которой будут выполняться запросы в базу и результат выводиться в listview.
Необходимо чтобы был постоянный коннект к базе. Вот кусок кода, при помощи которого я нормально подключаюсь к базе, но он прописан в событии Click на кнопке первой формы.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
            string strConn = "Provider=MSDAORA;Data Source=" + textBox3.text + ";User Id=" + textBox1.text + ";Password=" + textBox2.text + ";";
            OleDbConnection conn = new OleDbConnection(strConn);
            OleDbCommand command = new OleDbCommand(SQL, conn);
            try
            {
                // connection.Open();
                conn.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Подключение не удалось: " + ex.Message);

            }

            OleDbDataReader reader = command.ExecuteReader();

            while (reader.Read())
            {
                MessageBox.Show(reader.GetString(0) + ", " + reader.GetString(1));
            }

            reader.Close();


Как правильно перенести этот код в Program.cs чтобы коннект был постоянным. и можно было постоянно обращаться к этому классу, подавая на вход ему только строку sql запроса?
Помогите кодом.
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39280472
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Объявить как

Код: c#
1.
2.
3.
4.
static public OleDbConnection;

static void Main(string[] args)
        {



Тогда отовсюду можно будет обращаться

Код: c#
1.
Program.OleDbConnection
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39280484
Karlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хоть убей не могу понять как это правильно прописать. Вот что есть в program.cs
Код: 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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data;
namespace dsp
{
    static class Program
    {
        /// <summary>
        /// Главная точка входа для приложения.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Logon());
        }
       static public OleDbConnection;

    }
}




Куда тут прописать. Причем так чтобы при нажатии на кнопку на Form1 в строку коннекта подставились значения из полей. и создался коннект. А второй класс должен заполнять какой-нибудь datagrid или массив данными из запроса, который подается на вход этому классу
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39280487
Karlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь за идиотские вопросы. Я не писал никогда на ООП языках. Всю жизнь хватало VB. Просто так обстоятельства сложились что надо небольшой проект именно C# написать. Не могу переключить мозги на ООП мышление
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39280584
Karlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сделал так
Код: 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.
    static class Program
    {
        static public OleDbConnection conn { set; get; }
        /// <summary>
        /// Главная точка входа для приложения.
        /// </summary>
        [STAThread]
       
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Logon());
          
            string strConn = "Provider=MSDAORA;Data Source=testodb;User Id=kak;Password=ft6yhgy7;";
            conn = new OleDbConnection(strConn);
            try
            {
                conn.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Подключение не удалось: " + ex.Message);
            }
        }
   
      
        }
 }


Вызываю по кнопке:
Код: c#
1.
2.
3.
4.
5.
6.
        private void button1_Click(object sender, EventArgs e)
        {
          string  SQL = "SELECT * FROM smr";
           OleDbCommand command = new OleDbCommand(SQL, Program.conn);
            MessageBox.Show("OK");
                  OleDbDataReader reader = command.ExecuteReader();


выдает ошибку:
Дополнительные сведения: ExecuteReader: Свойство Connection не инициализировано.
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39280588
Karlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Karlusсделал так
Код: 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.
    static class Program
    {
        static public OleDbConnection conn { set; get; }
        /// <summary>
        /// Главная точка входа для приложения.
        /// </summary>
        [STAThread]
       
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Logon());
          
            string strConn = "Provider=MSDAORA;Data Source=testodb;User Id=kak;Password=xxx;";
            conn = new OleDbConnection(strConn);
            try
            {
                conn.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Подключение не удалось: " + ex.Message);
            }
        }
   
      
        }
 }


Вызываю по кнопке:
Код: c#
1.
2.
3.
4.
5.
6.
        private void button1_Click(object sender, EventArgs e)
        {
          string  SQL = "SELECT * FROM smr";
           OleDbCommand command = new OleDbCommand(SQL, Program.conn);
            MessageBox.Show("OK");
                  OleDbDataReader reader = command.ExecuteReader();


выдает ошибку:
Дополнительные сведения: ExecuteReader: Свойство Connection не инициализировано.
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39280608
Иммануил Кант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому что код после строчки
Код: c#
1.
Application.Run(new Logon()); 


еще не выполнился
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39280611
Иммануил Кант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KarlusНеобходимо чтобы был постоянный коннект к базе

Вы сами себе придумали это условие?
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39280620
Иммануил Кант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39280621
Иммануил Кант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39280629
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
        private void button1_Click(object sender, EventArgs e)
        {
          string  SQL = "SELECT * FROM smr";
           OleDbCommand command = new OleDbCommand(SQL, Program.conn);
            MessageBox.Show("OK");
                  Program.conn.Open() ;
                  OleDbDataReader reader = command.ExecuteReader();
                  ...
                  Program.conn. Close() ;
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39280664
JVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иммануил КантKarlusНеобходимо чтобы был постоянный коннект к базе

Вы сами себе придумали это условие?для виндового приложения это - нормально.
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39280825
Karlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Иммануил Кант,
Нет, это не мое желание, поддерживать постоянный коннект.
Спасибо за ссылки. Разобрался.
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39281551
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
KarlusНет, это не мое желание, поддерживать постоянный коннект.
Неправильное желание. Микроофт не рекомендует
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39281558
JVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Неправильное желание. Микроофт не рекомендуетчивоита? это-же не пул, монопольное соединение. возвращать не нужно, соответственно.
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39281560
JVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2,

наоборот, глупо открывать/закрывать соединения каждый раз, зная, что его (соединение) никто использовать не будет=)
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39281829
masleshov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JVF, позвольте, а зачем держать открытым соединение, если его никто не использует, и тем самым уменьшать доступные подключения?
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39281832
Иванов Мойша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
masleshovJVF, позвольте, а зачем держать открытым соединение, если его никто не использует, и тем самым уменьшать доступные подключения?

от желания наступить на грабли, особенно многопоточные
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282172
JVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
masleshovJVF, позвольте, а зачем держать открытым соединение, если его никто не использует, и тем самым уменьшать доступные подключения?затем, сынок, что создание новаго соединения это - дорогое удовольствие, а в клиент-серверных приложениях пул соединений - не используется.
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282173
Иммануил Бонд Аренко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JVFmasleshovJVF, позвольте, а зачем держать открытым соединение, если его никто не использует, и тем самым уменьшать доступные подключения?затем, сынок, что создание новаго соединения это - дорогое удовольствие, а в клиент-серверных приложениях пул соединений - не используется.

маме своей побибикай (с)

чушь порете, товарищ
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282180
JVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иммануил Бонд АренкоJVFпропущено...
затем, сынок, что создание новаго соединения это - дорогое удовольствие, а в клиент-серверных приложениях пул соединений - не используется.

маме своей побибикай (с)

чушь порете, товарищты хочешь затрахать сервер ненужными накладными расходами по созданию/уничтожению соединений? давай, сына, нихто тебе не мешает :)
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282182
Иммануил Бонд Аренко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JVFИммануил Бонд Аренкопропущено...


маме своей побибикай (с)

чушь порете, товарищты хочешь затрахать сервер ненужными накладными расходами по созданию/уничтожению соединений? давай, сына, нихто тебе не мешает :)

про пул соединений слышал? а, скорее всего нет
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282186
JVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иммануил Бонд Аренкопро пул соединений слышал? а, скорее всего нетавторв клиент-серверных приложениях пул соединений - не используется.давай раскажи нам тут про использование пула в КС приложениях. мож чего и узнаю на старости лет.
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282188
Иммануил Бонд Аренко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JVFИммануил Бонд Аренкопро пул соединений слышал? а, скорее всего нетавторв клиент-серверных приложениях пул соединений - не используется.давай раскажи нам тут про использование пула в КС приложениях. мож чего и узнаю на старости лет.

не узнаешь, ибо туп
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282193
JVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иммануил Бонд Аренконе узнаешь, ибо туптуп как раз ты, если не понимаешь принципов работы одно и многозвенных приложений. фигачь пул из 20-ти соединений на одного клиента, чо.
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282197
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JVFИммануил Бонд Аренконе узнаешь, ибо туптуп как раз ты, если не понимаешь принципов работы одно и многозвенных приложений. фигачь пул из 20-ти соединений на одного клиента, чо.

бу-га-га
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282206
Karlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
постоянный коннект нужен из-за использования процедур, заполняющих темповый таблицы на сессию. а переписывать сотню процедур из-за софтинки желания нет.
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282211
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Karlus,

ну так держите его в статическом поле класса
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282351
masleshov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JVFmasleshovJVF, позвольте, а зачем держать открытым соединение, если его никто не использует, и тем самым уменьшать доступные подключения?затем, сынок, что создание новаго соединения это - дорогое удовольствие, а в клиент-серверных приложениях пул соединений - не используется.

папочка, расскажи пожалуйста, а что же используется в клиент-серверных приложениях вместо пула?
особенно интересует случай, когда используется ORM и да, твоя любимая трехзвенная архитектура
кстати. а ты давно свой проект на мемори лики проверял? :)
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282358
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Karlusпостоянный коннект нужен из-за использования процедур, заполняющих темповый таблицы на сессию. а переписывать сотню процедур из-за софтинки желания нет.
А зачем их переписывать?
============
Если сотня процедур выполняется подряд, без перерыва, то тогда да, лучше открыть соединение и держать открытым пока они все не выполнятся. Но как только начинает работать пользователь, который что-то читает или пишет раз в 5 минут, то тут лучше открывать и закрывать.
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282368
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Cat2]Karlus============
Если сотня процедур выполняется подряд, без перерыва, то тогда да, лучше открыть соединение и держать открытым пока они все не выполнятся.

С концепцией пула вроде также будет, откроем через using соединение, пул выдаст нам имеющееся свободное или создаст новое, и внутрях выполним процедуры, после чего вернем в пул соединение
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282369
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, криворуко процитировал, должно быть так

Cat2Если сотня процедур выполняется подряд, без перерыва, то тогда да, лучше открыть соединение и держать открытым пока они все не выполнятся.
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282392
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
та ладно вам, приложению лет 300, изначально писали на повербилдере, а там модно было держать глобальный коннект, да и оракловый коннет подороже будет чем у MSSQL
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282405
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Karlusпостоянный коннект нужен из-за использования процедур, заполняющих темповый таблицы на сессию. а переписывать сотню процедур из-за софтинки желания нет.
Если постоянный коннект не держать, то как тогда решать проблемы связанные с временными таблицами?
Например использую такой прием для установки фильтра: создается временная таблица с ID нужных записей, затем выборка
Код: sql
1.
select ... from Table where ID in (select ID from #filter)


Во первых фильтр гибкий можно делать, во-вторых если наложение фильтра медленное, то тормоз только один раз, в третьих в #filter кроме ID можно часть инфы с других таблиц закэшировать, а в четвертых просто удобно, например в справочнике, когда исправленная запись не исчезает, т.к. после корректировки она перестала попадать под фильтр.
Пишу не в .net, в C# с гуем пока не разбирался.
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282413
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JVFИммануил Бонд Аренкопропущено...


маме своей побибикай (с)

чушь порете, товарищты хочешь затрахать сервер ненужными накладными расходами по созданию/уничтожению соединений? давай, сына, нихто тебе не мешает :)Ну настрой так, чтобы в пуле было всегда одно соединение. В чём проблема?
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282417
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЕсли постоянный коннект не держать, то как тогда решать проблемы связанные с временными таблицами?Создавай временную таблицу непосредственно перед запросом, в том же соединении, что и основной запрос. Сразу после запроса временную таблицу, вероятно, лучше удалить.
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282421
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилта ладно вам, приложению лет 300, изначально писали на повербилдереИли на Delphi.
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282558
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Dima TЕсли постоянный коннект не держать, то как тогда решать проблемы связанные с временными таблицами?
Не надо их решать, надо правильно индексы строить, с нужным покрытием
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282667
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Не надо их решать, надо правильно индексы строить, с нужным покрытием
В сложных запросах не всегда индексы помогают. например
Код: sql
1.
2.
3.
4.
5.
select * from t1 
       join t2 on t1.id2 = t2.id 
       join t3 on t1.id3 = t3.id 
              join t4 on t3.id4 = t4.id 
       where t2.date between ... and t4.value = ...


т.е. фильтр по связанным таблицам, и не по одной. И индексы все есть, но таблицы большие: сотни тысяч и миллионы записей. И тупит все это секунды, хотя результата может быть меньше сотни строк.
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282715
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Dima TCat2Не надо их решать, надо правильно индексы строить, с нужным покрытием
В сложных запросах не всегда индексы помогают. например
Код: sql
1.
2.
3.
4.
5.
select * from t1 
       join t2 on t1.id2 = t2.id 
       join t3 on t1.id3 = t3.id 
              join t4 on t3.id4 = t4.id 
       where t2.date between ... and t4.value = ...



т.е. фильтр по связанным таблицам, и не по одной. И индексы все есть, но таблицы большие: сотни тысяч и миллионы записей. И тупит все это секунды, хотя результата может быть меньше сотни строк.
Ничего не могу на это ответить, так как надо смотреть план выполнения запроса и решать, правильно ли построены индексы. Может у Вашей t1 нужен другой кластерный индекс?
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39282957
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2кластерный индекс
MSSQL разжижает мозг
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39283111
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ИзопропилCat2кластерный индекс
MSSQL разжижает мозг
Foх его сушит
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39283123
JVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНу настрой так, чтобы в пуле было всегда одно соединение. В чём проблема?и сколько, по-вашему, будет соединений в пуле с одним клиентом?
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39283138
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Foх его сушит
Когда что-то сохнет, то оно сморщивается, а сморщенный мозг самый эффективный, т.к. извилин максимум
...
Рейтинг: 0 / 0
Подключение к Oracle из C#
    #39283224
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JVFАлексей КНу настрой так, чтобы в пуле было всегда одно соединение. В чём проблема?и сколько, по-вашему, будет соединений в пуле с одним клиентом?Что, простите?
...
Рейтинг: 0 / 0
45 сообщений из 45, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Подключение к Oracle из C#
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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