Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

OleDBConnection connection

263
24 ноября 2006 года
koltaviy
816 / / 16.12.2004
Народ, разъясните ситуацию, пожалуйста!
В проект добавлен компонент OleDBConnection. Имеется статическая БД, т.е. количество и структура таблиц в БД заранее известны!.. Добавлены компоненты OleDBAdapter для каждой таблицы, и все таблицы добавлены в сгенерированный DataSet..
Так вот, вопрос в следующем - сохраняется ли принцип C# по удаленности dataSet от самой БД, т.е. пока мы работаем мы не делаем никаких изменений в самой БД(до обновления)??
Вопрос задаю потому, что работаю с MS Access и у меня "висит" файл *.ldb..
При динамическом создании DataSet'а и OleDBConnection'а все ясно:
 
Код:
...
using (OleDBConnection con = new OleDBConnection)
{con.Open();
 dataAdapter.Fill(dataSet, tableName)
}
...

Открыли, заполнили - все ясно..
Что делаю:
1) Удаляю компонент OleDBConnection в дизайне
2) Цепляю его также как в вышеприведенном коде
3) В using'e задаю connection для всех комманд адаптера:
 
Код:
...
dataAdapter.SelectCommand.Connection = con;
...

Все нормально работает, но если уберу строчку:
 
Код:
con.Open();

..то все будет и так нормально работать, также как и при:
 
Код:
dataAdapter(dataSet, tableName);

Connection вообще не нужно будет открывать!!
Короче, я ничо не понимаю..
Уже говорил, что только начал работать с C#.. Расскажите как сделать правильно, если мне действительно надо работать с таблицами в дизайн-тайме(задавать различные Relation, настраивать DataGridView и т.д.).. но при этом, чтобы и БД у меня корректно открывалась и закрывалась.. Настраивать все комманды(Select, Delete, Update, Insert) в коде будет очень "странным", так как таблиц у меня штук 20 связанных и несвязанных...
273
26 ноября 2006 года
3A3-968M
1.2K / / 22.12.2005
Всё что делается в design-time формируется в виде C# кода. Так что так или иначе все твои настройки выполняются в runtime. Если не веришь, загляни в файл xxx.Designer.cs, и увидишь там все свои настойки. И вызов метода Open так же встраивается дизайнером MSVS2005 именно поэтому, когда ты пишешь его в коде, ты делаешь просто повторный вызов. Но ещё раз повторюсь, открытие соединения, создание адаптера, привязка данных выполняется во время выполнения приложения. Просто это прозрачно для разработчика. И переносимость приложения никуда не денеться при этом.
263
26 ноября 2006 года
koltaviy
816 / / 16.12.2004
Цитата: 3A3-968M
Всё что делается в design-time формируется в виде C# кода. Так что так или иначе все твои настройки выполняются в runtime. Если не веришь, загляни в файл xxx.Designer.cs, и увидишь там все свои настойки. И вызов метода Open так же встраивается дизайнером MSVS2005 именно поэтому, когда ты пишешь его в коде, ты делаешь просто повторный вызов. Но ещё раз повторюсь, открытие соединения, создание адаптера, привязка данных выполняется во время выполнения приложения. Просто это прозрачно для разработчика. И переносимость приложения никуда не денеться при этом.


Посмотрю, обязательно!.. но правильно ли я понял?:
1) При вызове например:

 
Код:
dataAdapter.Fill(dataSet, tableName);

При выполнении произойдет следующее:
1. Откроется соединение, указанное в команде Select dataAdapter'a
2. Заполнится таблица
3. Соединение закроется

2) При вызове например:
 
Код:
dataAdapter.Update(dataSet, tableName);

При выполнении произойдет следующее:
1. Откроется соединение, указанное в команде Update(Insert/Delete) dataAdapter'a
2. Обновится таблица в БД
3. Соединение закроется
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог