Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
7 / 10 / 9
Регистрация: 02.12.2009
Сообщений: 483
1

повторное подключение

24.09.2010, 12:09. Показов 1488. Ответов 7
Метки нет (Все метки)

у меня две формы.на первой регистрация ползователя.все пользователи забиты в БД.при нажатии на кнопку на первой форме открывается вторая с данными из той же БД.То есть во второй форме так же приходится во второй раз подключаться к БД.Можно ли как то избежать этого второго подключения?То есть как бы сохранить пул соединений во второй форме
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.09.2010, 12:09
Ответы с готовыми решениями:

Повторное подключение к БД (connection string)
Подскажите плиз, как сделать, чтобы при неоткрывшемся соединении (connection not opened) программа...

Повторное соединение
Доброго времени суток. Есть такая проблема. Я связываю комбобокс txtAgent с таблицей Agents....

Повторное удаление
Здравствуйте! У меня такая проблема. При работе с базой данных, а точнее при удалении записи,...

Повторное выполнение программы
Всем привет, у меня такая проблема : есть код using System; using System.Collections.Generic;...

7
271 / 203 / 13
Регистрация: 18.06.2010
Сообщений: 491
24.09.2010, 17:05 2
передать во вторую форму в конструктор параметром ссылку на это подключение
0
7 / 10 / 9
Регистрация: 02.12.2009
Сообщений: 483
25.09.2010, 11:56  [ТС] 3
Цитата Сообщение от Terion Посмотреть сообщение
передать во вторую форму в конструктор параметром ссылку на это подключение
а можно кодом показать?
0
271 / 203 / 13
Регистрация: 18.06.2010
Сообщений: 491
25.09.2010, 16:09 4
типа такого

1ая форма:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private static OleDbConnection connection;
 
        private void Form1_Load(object sender, EventArgs e)
        {
            string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\1.mdb";
            connection = new OleDbConnection(connectionString);
            connection.Open();
        }
 
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            connection.Close();
        }
 
private void button1_Click(object sender, EventArgs e)
        {
         Form2 ff = new Form(connection);
ff.Show();
}
2ая форма:
C#
1
2
3
4
5
6
7
       private static  OleDbConnection connection;
 
public Form2(OleDbConnection conn)
        {
            InitializeComponent();
            connection=conn;
        }
0
7 / 10 / 9
Регистрация: 02.12.2009
Сообщений: 483
25.09.2010, 22:53  [ТС] 5
а это хоть как то ускорит подключение к БД.Я имею ввиду имеет ли смысл такой тип подхода к ускорению получения данных из БД.Ведь всё это затевалось именно для ускорения.У меня практически везде в коде использую DataReader,ну за исключением где на форме используется datagridview (там не обойтись без dataadapter)
0
271 / 203 / 13
Регистрация: 18.06.2010
Сообщений: 491
26.09.2010, 11:52 6
"а это хоть как то ускорит подключение к БД" - это вопрос?)если да, то не очень понятно, что вы имели в виду. физического ПОДКЛЮЧЕНИЯ в моем методе во 2ой раз не будет. оно уже подключено. с точки зрения ОБРАЩЕНИЯ к бд, конечно быстрее, вам же не надо опять физическое подключение вызывать.

ну это все вы сами должны решить.данные можно 1 раз слить в датасет, а потом его тиражировать.потом вопрос, сколько человек будет пользоваться прогой?сколько подключений вы хотите держать открытыми?у базы-то есть есть такое замечательное свойство, как блокировка. зачем сто раз к ней подключаться?
почему,например, отдаете приоритет датаридеру?все можно делать через адаптер, залить датасет и делать с ним, что хочешь.и делать запросы к нему,а не к базе (если данные в базе не меняются)

опять же, повторюсь, вы сами должны решить,что вам лучше, тк я не знаю, как вы используете взятые из базы данные, каковы объемы инфо. я лично предпочитаю 1 раз слить все нужное инфо, и лишние разы к базе не цепляться (если знаю, что инфо в базе не меняется, и объемы позволяют).

з.ы. в зависимости от функционала вашей 2ой формы, вы вообще можете не трогать там соединение.вы же как-то из первой формы передаете параметром, что надо из базы вытащить?почему бы не сделать все обращение в 1ой форме, а всю инфу передать во 2ую параметрами?обратная передача может быть по такой же схеме.
в общем, хочу сказать, что тут много подходов в реализации такой задачи.
0
212 / 212 / 20
Регистрация: 18.05.2010
Сообщений: 847
26.09.2010, 18:12 7
Terion, А не лучше ли использвать тоже статическую переменную но объявленную в статическом классе например в классе Program
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    static class Program
    {
        static public OleDbConnection connection;
 
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
и пользоваться ею везде во всех формах. например
C#
1
2
3
4
5
6
        private void Form1_Load(object sender, EventArgs e)
        {
            string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\1.mdb";
            Program.connection = new OleDbConnection(connectionString);
            Program.connection.Open();
        }
0
271 / 203 / 13
Регистрация: 18.06.2010
Сообщений: 491
26.09.2010, 20:21 8
можно и так)я ж говорю, методов полно
я просто лично не люблю делать что бы то ни было public, если есть другие способы это обойти)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.09.2010, 20:21

Повторное использование HttpWebRequest
Задача: получить с сайта html код, взять оттуда некие данные и затем на этот же сайт отправить post...

Повторное использование сокетов
при попытке отправить второй раз текст на сервер выходит exception server class...

Повторное использование исходного кода в C#
есть желание собрать в одном solution несколько (два для начала) projects с разными целевыми...

Повторное использование cookie при GET-запросе
Всем привет. Мне нужно было при гет запросе сохранять в куки-коллекшин куки все полученные, а при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.