powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как лучше организовать доступ к БД из VB6
16 сообщений из 16, страница 1 из 1
Как лучше организовать доступ к БД из VB6
    #32858417
1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Приложение MDI.Нужно редактировать данные в двух различных БД. Одна - Access, другая Oracle.

Как лучше организовать доступ? Раньше я программировал на Oracle Forms. Там с базой просто было общаться. А тут не знаю как. Возникают такие трудности


НЕужели на каждую форму нужно кидать ADODC. Если нужно я конечно буду кидать на каждую форму. Но как тогда там задавать ConnectionString. У меня источник ODBC потом может поменяться.

Спасибо.
...
Рейтинг: 0 / 0
Как лучше организовать доступ к БД из VB6
    #32858459
Фотография _bob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще ничего кидать не надо, открываешь ado.connection (придется 2 или одно, если с базами работать по очереди), получаешь рекордсеты и вперед, всякие дата контролы криво работают
------------------
Best regards, _bob
...
Рейтинг: 0 / 0
Как лучше организовать доступ к БД из VB6
    #32858502
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В модуле (или в DataEnvironment) объявляете два соединения, например:
public connOra As New ADODB.Connection
connOra.ConnectionString = ....
public connMdb As New ADODB.Connection
...
В любой форме рекордсету, при открытии, подставляете один из этих коннекшенов.

rs.Open "SELECT...", Module1.connOra, ....
...
Рейтинг: 0 / 0
Как лучше организовать доступ к БД из VB6
    #32858588
1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е как я вас понял. Лучше ( как показывает практика) сделать модуль в нем

Такие процедуры

1) Init_Ora
Инициализация коннекта к oracle

2) Init_Voc
Инициализация коннекта к словарю ( на Access)

3) Get_Ora_Connection

4) Get_Voc_Connection

И в каждой форме где нужно вызываю их ( Init вызываю при загрузке главной формы в MDI )

А может классы какие вы делаете? для каждой таблицы какой-нить класс?
...
Рейтинг: 0 / 0
Как лучше организовать доступ к БД из VB6
    #32858627
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет необходимости для каждой формы получать свой Connection
Достаточно один раз при запуске приложения открыть его, и все необходимые Recordset, объявив их глобальными (Public). И всё. Никаких дополнительных классов для работы с ADO не нужно, он и так заточен для работы с VB.
...
Рейтинг: 0 / 0
Как лучше организовать доступ к БД из VB6
    #32865070
1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я запутался. ПОмогите плиз.

Как-то не удобно получается

Мне получается нужно в этом модуле 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
и т.д
...
Рейтинг: 0 / 0
Как лучше организовать доступ к БД из VB6
    #32865404
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чего неудобно то?
Один раз при запуске программы создал коннекшэн или два, или сколько тебе надо по количеству баз данных. И вперёд...

Рекордсет я бы тут инициализировать не стал, а создавал бы их по мере надобности в формах, процедурах и т.п.
...
Рейтинг: 0 / 0
Как лучше организовать доступ к БД из VB6
    #32865451
1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е делаю только модуль с Connection?

Кстати у меня не получается там объявить его как PUblic. пРиходиться писать Get


Пишу так.

Dim g_cnVoc As ADODB.Connection

А ругается если пишу та

Public Dim g_cnVoc As ADODB.Connection
...
Рейтинг: 0 / 0
Как лучше организовать доступ к БД из VB6
    #32865497
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Public Conn1 As New ADODB.Connection
...
Рейтинг: 0 / 0
Как лучше организовать доступ к БД из VB6
    #32865588
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, реализация доступа к соеденению - не такая уж плохая вещь, скорее наоборт, очень хорошая. По многим причинам.
Хотябы оттого что в самом свойстве, при попытке доступа можно проверить его статус и предпринять какие либо шаги.

А вот сразу
Public Conn1 As New ADODB.Connection
я бы не советовал. Это не есть бест практис.

Magnus
...
Рейтинг: 0 / 0
Как лучше организовать доступ к БД из VB6
    #32867923
Flare
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Magnus23,
А что плохого при запуске программы где-то в модуле делать:
Public Conn1 As New ADODB.Connection ?
Какая же все-таки Best Practice?
...
Рейтинг: 0 / 0
Как лучше организовать доступ к БД из VB6
    #32868072
Фотография _bob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пример из жизни:
приложение по внешнему сигналу асинхронно обновляет гриды, юзер в это время может что-нибудь делать, инициируя вставку в БД, ADO ругается, что коннекшн занят другим делом, в случае public приходится отслеживать занятость коннекта везде, где он используется, а в случае получения коннекта через get propety, эту проверку достаточно написать 1 раз
------------------
Best regards, _bob
...
Рейтинг: 0 / 0
Как лучше организовать доступ к БД из VB6
    #32868169
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FlareMagnus23,
А что плохого при запуске программы где-то в модуле делать:
Public Conn1 As New ADODB.Connection ?
Какая же все-таки Best Practice?

Обьявление As New создает экземпляр класса при первом обращении к нему. А при всех последующих будет проверять создан он уже или еще нет. Оно нам надо?

Код: plaintext
1.
2.
Public Conn1 As ADODB.Connection

Set Conn1 = New ADODB.Connection
Создавать его можно например при инициализации класса. В свойство напихать любые необходимые порверки статуса и т.д.
Так же в классе неплохо было бы реализовать событие обрыва соеденения и корректно обработать его, переподключившись либо выдав ошибку.
...
Рейтинг: 0 / 0
Как лучше организовать доступ к БД из VB6
    #32869378
Flare
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Благодарю ход мыслей ясен.
Но для меня это неактуально, если
Код: plaintext
Public Conn1 As New ADODB.Connection
выполняется один раз при запуске приложения, согласись.
А насчет реконнекта, реально не встречался с этим в своей локальной сети...
...
Рейтинг: 0 / 0
Как лучше организовать доступ к БД из VB6
    #32869570
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше всегда стараться писать правильно.
Независимо от того "актуально" это сейчас или нет.
...
Рейтинг: 0 / 0
Как лучше организовать доступ к БД из VB6
    #32870140
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FlareБлагодарю ход мыслей ясен.
Но для меня это неактуально, если
Код: plaintext
Public Conn1 As New ADODB.Connection
выполняется один раз при запуске приложения, согласись.
А насчет реконнекта, реально не встречался с этим в своей локальной сети...
Что значит неактуакьно?
Ты к соеденению в проэкте обращаешься? Так вот при КАЖДОМ таком обращении будет происходить проверка на наличие экземпляра класса. Если же создать его в отдельной строки то проверки не будет.


Да и верно Alexey Kudinov говорит. Best practice они не для какого то конкретного проекта. Это такие же правила как чистить зубы и мыть руки. Лучше просто привыкнуть их использовать. По этому признаку нередко судят о классе прога. Кому понравится корявый код?
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как лучше организовать доступ к БД из VB6
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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