|
|
|
Как лучше организовать доступ к БД из VB6
|
|||
|---|---|---|---|
|
#18+
Добрый день. Приложение MDI.Нужно редактировать данные в двух различных БД. Одна - Access, другая Oracle. Как лучше организовать доступ? Раньше я программировал на Oracle Forms. Там с базой просто было общаться. А тут не знаю как. Возникают такие трудности НЕужели на каждую форму нужно кидать ADODC. Если нужно я конечно буду кидать на каждую форму. Но как тогда там задавать ConnectionString. У меня источник ODBC потом может поменяться. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2005, 10:05:07 |
|
||
|
Как лучше организовать доступ к БД из VB6
|
|||
|---|---|---|---|
|
#18+
вообще ничего кидать не надо, открываешь ado.connection (придется 2 или одно, если с базами работать по очереди), получаешь рекордсеты и вперед, всякие дата контролы криво работают ------------------ Best regards, _bob ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2005, 10:27:22 |
|
||
|
Как лучше организовать доступ к БД из VB6
|
|||
|---|---|---|---|
|
#18+
В модуле (или в DataEnvironment) объявляете два соединения, например: public connOra As New ADODB.Connection connOra.ConnectionString = .... public connMdb As New ADODB.Connection ... В любой форме рекордсету, при открытии, подставляете один из этих коннекшенов. rs.Open "SELECT...", Module1.connOra, .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2005, 10:43:23 |
|
||
|
Как лучше организовать доступ к БД из VB6
|
|||
|---|---|---|---|
|
#18+
т.е как я вас понял. Лучше ( как показывает практика) сделать модуль в нем Такие процедуры 1) Init_Ora Инициализация коннекта к oracle 2) Init_Voc Инициализация коннекта к словарю ( на Access) 3) Get_Ora_Connection 4) Get_Voc_Connection И в каждой форме где нужно вызываю их ( Init вызываю при загрузке главной формы в MDI ) А может классы какие вы делаете? для каждой таблицы какой-нить класс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2005, 11:14:54 |
|
||
|
Как лучше организовать доступ к БД из VB6
|
|||
|---|---|---|---|
|
#18+
Нет необходимости для каждой формы получать свой Connection Достаточно один раз при запуске приложения открыть его, и все необходимые Recordset, объявив их глобальными (Public). И всё. Никаких дополнительных классов для работы с ADO не нужно, он и так заточен для работы с VB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2005, 11:28:53 |
|
||
|
Как лучше организовать доступ к БД из VB6
|
|||
|---|---|---|---|
|
#18+
Что-то я запутался. ПОмогите плиз. Как-то не удобно получается Мне получается нужно в этом модуле Project ( модуле для работы с базой данных) создавать один рекордсет. Но для него выходит в этом модуле нужно сделать еще методы: 1) Set_SQL_String 2) Open 3) Get_RS И вызывать у себя так в форме v_RS As ADODB.Recordset Project.Set_SQL_String("select name from all_tables"); Project.Open(); Set v_RS = Project.Get_RS() While Not v_RS.EOF lstAvailebleList.AddItem (v_Rs![Name]) v_RS.MoveNext Wend v_RS.Close и т.д ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 14:01:22 |
|
||
|
Как лучше организовать доступ к БД из VB6
|
|||
|---|---|---|---|
|
#18+
А чего неудобно то? Один раз при запуске программы создал коннекшэн или два, или сколько тебе надо по количеству баз данных. И вперёд... Рекордсет я бы тут инициализировать не стал, а создавал бы их по мере надобности в формах, процедурах и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 15:35:46 |
|
||
|
Как лучше организовать доступ к БД из VB6
|
|||
|---|---|---|---|
|
#18+
т.е делаю только модуль с Connection? Кстати у меня не получается там объявить его как PUblic. пРиходиться писать Get Пишу так. Dim g_cnVoc As ADODB.Connection А ругается если пишу та Public Dim g_cnVoc As ADODB.Connection ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 15:48:28 |
|
||
|
Как лучше организовать доступ к БД из VB6
|
|||
|---|---|---|---|
|
#18+
Public Conn1 As New ADODB.Connection ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 16:08:23 |
|
||
|
Как лучше организовать доступ к БД из VB6
|
|||
|---|---|---|---|
|
#18+
Кстати, реализация доступа к соеденению - не такая уж плохая вещь, скорее наоборт, очень хорошая. По многим причинам. Хотябы оттого что в самом свойстве, при попытке доступа можно проверить его статус и предпринять какие либо шаги. А вот сразу Public Conn1 As New ADODB.Connection я бы не советовал. Это не есть бест практис. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 16:41:55 |
|
||
|
Как лучше организовать доступ к БД из VB6
|
|||
|---|---|---|---|
|
#18+
Magnus23, А что плохого при запуске программы где-то в модуле делать: Public Conn1 As New ADODB.Connection ? Какая же все-таки Best Practice? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2005, 14:36:17 |
|
||
|
Как лучше организовать доступ к БД из VB6
|
|||
|---|---|---|---|
|
#18+
пример из жизни: приложение по внешнему сигналу асинхронно обновляет гриды, юзер в это время может что-нибудь делать, инициируя вставку в БД, ADO ругается, что коннекшн занят другим делом, в случае public приходится отслеживать занятость коннекта везде, где он используется, а в случае получения коннекта через get propety, эту проверку достаточно написать 1 раз ------------------ Best regards, _bob ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2005, 15:11:16 |
|
||
|
Как лучше организовать доступ к БД из VB6
|
|||
|---|---|---|---|
|
#18+
FlareMagnus23, А что плохого при запуске программы где-то в модуле делать: Public Conn1 As New ADODB.Connection ? Какая же все-таки Best Practice? Обьявление As New создает экземпляр класса при первом обращении к нему. А при всех последующих будет проверять создан он уже или еще нет. Оно нам надо? Код: plaintext 1. 2. Так же в классе неплохо было бы реализовать событие обрыва соеденения и корректно обработать его, переподключившись либо выдав ошибку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2005, 15:40:18 |
|
||
|
Как лучше организовать доступ к БД из VB6
|
|||
|---|---|---|---|
|
#18+
Благодарю ход мыслей ясен. Но для меня это неактуально, если Код: plaintext А насчет реконнекта, реально не встречался с этим в своей локальной сети... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2005, 10:39:41 |
|
||
|
Как лучше организовать доступ к БД из VB6
|
|||
|---|---|---|---|
|
#18+
Лучше всегда стараться писать правильно. Независимо от того "актуально" это сейчас или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2005, 11:28:00 |
|
||
|
Как лучше организовать доступ к БД из VB6
|
|||
|---|---|---|---|
|
#18+
FlareБлагодарю ход мыслей ясен. Но для меня это неактуально, если Код: plaintext А насчет реконнекта, реально не встречался с этим в своей локальной сети... Что значит неактуакьно? Ты к соеденению в проэкте обращаешься? Так вот при КАЖДОМ таком обращении будет происходить проверка на наличие экземпляра класса. Если же создать его в отдельной строки то проверки не будет. Да и верно Alexey Kudinov говорит. Best practice они не для какого то конкретного проекта. Это такие же правила как чистить зубы и мыть руки. Лучше просто привыкнуть их использовать. По этому признаку нередко судят о классе прога. Кому понравится корявый код? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2005, 14:05:43 |
|
||
|
|

start [/forum/topic.php?fid=60&tid=2168331]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
39ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 189ms |
| total: | 283ms |

| 0 / 0 |
