powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Mysql и VB 6.0(использование в одном RecordSet'e множества запросов)
13 сообщений из 13, страница 1 из 1
Mysql и VB 6.0(использование в одном RecordSet'e множества запросов)
    #37256169
epifreezz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Делаю я приложение с использованием Mysql + Vb 6.0
в приложении много форм(гдето 12)

Вопрос
Обязательно ли создавать новое соединение точнее RecordSet при выполнении нового sql запроса ?
или можно какимито другими командами это заменить?.


приведу пример

На форме у меня две Datagrid. и гдето 3 кнопки( в этих процедурах этих кнопок содержатся sql команды )
Для каждой Datagrid я создаю соединение ( используя модуль), и отдельный RecordSet



Код модуля
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public cn As ADODB.connection
Public rs As ADODB.Recordset
Public cmd As String

'соединение с БД
Sub connection1()
cmd = "Driver={MySQL ODBC 3.51 Driver};Server=" & Dialog.txtServer & ";Port=" & Dialog.txtPort & ";Database=mydb;User=" & Dialog.txtUser & "; Password=" & Dialog.txtPasw & ";Option=3;"
Set cn = New ADODB.connection
cn.ConnectionString = cmd
cn.Open
End Sub


код формы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub Form_Load()

sq = "select * from assort"
modul1.connection1    
'--------------------------
Set rs = New ADODB.Recordset    ' 
cn.CursorLocation = adUseClient   ' Новый RecordSet
rs.Open sq, cn, adOpenStatic       '
'----------------------------
Set DataGrid1.DataSource = rs    'Вывожу запрос в datagrid1
    DataGrid1.ReBind
End Sub


и в кнопках тоже приходится использовать новый RecordSet , т.к без этого программа не хотит работать.
к примеру при нажатии на кнопку выполнится опередлённый действия с таблицами
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Private Sub Command1_Click()
modul1.connection1  
b = "select * from assort where as_id=" & Text2.Text & "" 
'----------------------------
Set rs = New ADODB.Recordset
cn.CursorLocation = adUseClient '  Опять Новый RecordSet
rs.Open b, cn, adOpenStatic
'----------------------------

a = "insert INTO assort(genre_id) values(" & Text3.Text & ")"
'----------------------------
Set rs = New ADODB.Recordset
cn.CursorLocation = adUseClient '  Опять Новый RecordSet
rs.Open a, cn, adOpenStatic
'----------------------------
end sub



Вот такая вот беда =)
Возможно я туплю, не понимая очевидного.

Кто знает помогите.

Если можна с примером.
...
Рейтинг: 0 / 0
Mysql и VB 6.0(использование в одном RecordSet'e множества запросов)
    #37256252
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот что тебя сподвигло на генерацию мысли об экономии рекордсетов?
Открывай их нужного реально типа и с нужными опциями, не забывай закрывать (особенно в нештатных ситуациях). На всякий случай - вместо отдельных рекордсетов можешь завести их коллекцию уровня приложения в рамках одного коннекшена, это упростит чистку при выгрузке формы и/или завершении приложения.
...
Рейтинг: 0 / 0
Mysql и VB 6.0(использование в одном RecordSet'e множества запросов)
    #37256417
epifreezz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaНа всякий случай - вместо отдельных рекордсетов можешь завести их коллекцию уровня приложения в рамках одного коннекшена, это упростит чистку при выгрузке формы и/или завершении приложения.
А можно по подробнее, где про это можно почитать.

или примерчик использования этих коллекций, какой нибудь.
...
Рейтинг: 0 / 0
Mysql и VB 6.0(использование в одном RecordSet'e множества запросов)
    #37256436
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
epifreezzА можно по подробнее, где про это можно почитать.
в хелпе
epifreezzили примерчик использования этих коллекций, какой нибудь.
где-то я уже слышал этот вопрос
10570459
...
Рейтинг: 0 / 0
Mysql и VB 6.0(использование в одном RecordSet'e множества запросов)
    #37256439
epifreezz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторВот что тебя сподвигло на генерацию мысли об экономии рекордсетов?
А сподвигло то что :

1) я делаю курсовой, соответсвенно надо будет делать и блоксхему=)

2)Когда открываю больше 2 рекордсетов в форме к примеру как тут,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub Command1_Click()
modul1.connection1  
b = "select * from assort where as_id=" & Text2.Text & "" 
'----------------------------
Set rs = New ADODB.Recordset
cn.CursorLocation = adUseClient '  Опять Новый RecordSet
rs.Open b, cn, adOpenStatic
'----------------------------

a = "insert INTO assort(genre_id) values(" & Text3.Text & ")"
'----------------------------
Set rs = New ADODB.Recordset
cn.CursorLocation = adUseClient '  Опять Новый RecordSet
rs.Open a, cn, adOpenStatic
'----------------------------
end sub

то при закрытии их ,закрывается только последний.а первый остаётся активным
закрываю обычно отдельной кнопкой

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Command2_Click()
'-----------------------------
'закрытие рекодсета или соединения
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub



вот так вот
...
Рейтинг: 0 / 0
Mysql и VB 6.0(использование в одном RecordSet'e множества запросов)
    #37256680
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
epifreezz,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Private Sub Command1_Click()
modul1.connection1  
b = "select * from assort where as_id=" & Text2.Text & "" 
'----------------------------
Set rs = New ADODB.Recordset
cn.CursorLocation = adUseClient '  Опять Новый RecordSet
rs.Open b, cn, adOpenStatic
'----------------------------

a = "insert INTO assort(genre_id) values(" & Text3.Text & ")"
'----------------------------
rs.Close: Set rs = Nothing
Set rs = New ADODB.Recordset
cn.CursorLocation = adUseClient '  Опять Новый RecordSet
rs.Open a, cn, adOpenStatic
'----------------------------
end sub
я тоже сталкивался с разными глюками, если открывать новый рекорсед, не закрыв предыдущий в той же переменной
...
Рейтинг: 0 / 0
Mysql и VB 6.0(использование в одном RecordSet'e множества запросов)
    #37256933
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
epifreezzя делаю курсовой, соответсвенно надо будет делать и блоксхему
А за каким хреном в блок-схеме детализация до содержимого переменной?

epifreezzпри закрытии их ,закрывается только последний.а первый остаётся активным
А за каким хреном второй раз используется New? Это же чистой воды рукотворный leak!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Private Sub Command1_Click()

Call modul1.connection1  
If Not rs Is Nothing Then ' вроде так
  rs.Close
  Set rs = Nothing
End If
Set rs = New ADODB.Recordset


b = "select * from assort where as_id=" & Text2.Text & "" 
'----------------------------
' Set rs = New ADODB.Recordset
cn.CursorLocation = adUseClient '  Опять Новый RecordSet
rs.Open b, cn, adOpenStatic
'----------------------------

a = "insert INTO assort(genre_id) values(" & Text3.Text & ")"
'----------------------------
' Set rs = New ADODB.Recordset
' cn.CursorLocation = adUseClient '  Опять Новый RecordSet
rs.Open a, cn, adOpenStatic
'----------------------------
end sub 
...
Рейтинг: 0 / 0
Mysql и VB 6.0(использование в одном RecordSet'e множества запросов)
    #37256944
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя я бы перенёс
Код: plaintext
Set rs = New ADODB.Recordset
из Command1_Click() в Form_Load(), а
Код: plaintext
1.
rs.Close
Set rs = Nothing
соответственно в Form_Unload.
...
Рейтинг: 0 / 0
Mysql и VB 6.0(использование в одном RecordSet'e множества запросов)
    #37257640
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
epifreezzв приложении много форм(гдето 12)На самом деле это мало :)
epifreezzОбязательно ли создавать новое соединение точнее RecordSet при выполнении нового sql запроса ?Не обязательно и даже вредно. Открытие/закрытие соединения нагружает сервер больше, чем просто его поддержание.
...
Рейтинг: 0 / 0
Mysql и VB 6.0(использование в одном RecordSet'e множества запросов)
    #37257648
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyepifreezzв приложении много форм(гдето 12)На самом деле это мало :)
epifreezzОбязательно ли создавать новое соединение точнее RecordSet при выполнении нового sql запроса ?Не обязательно и даже вредно. Открытие/закрытие соединения нагружает сервер больше, чем просто его поддержание.

не совсем так, пулл соединений хорошая штука. а в .NET так вообще наоборот рекомендация: всегда открывать соедиенение/выполнять действия/закрывать.
...
Рейтинг: 0 / 0
Mysql и VB 6.0(использование в одном RecordSet'e множества запросов)
    #37257650
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyepifreezzОбязательно ли создавать новое соединение точнее RecordSet при выполнении нового sql запроса ?Не обязательно и даже вредно. Открытие/закрытие соединения нагружает сервер больше, чем просто его поддержание.
обрати внимание, что он спросил
соединение и рекордсет не одно и то же
новое соединение открывать не надо
рекордсет - придется
...
Рейтинг: 0 / 0
Mysql и VB 6.0(использование в одном RecordSet'e множества запросов)
    #37257732
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обратил, но счел, что эта информация все равно не будет лишней.
...
Рейтинг: 0 / 0
Mysql и VB 6.0(использование в одном RecordSet'e множества запросов)
    #37258173
epifreezz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем за ответы!

Вроде как понял свои ошибки.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Mysql и VB 6.0(использование в одном RecordSet'e множества запросов)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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