Запись/чтение данных из Mysql

 
0
 
Visual Basic
ava
exepir | 27.03.2013, 15:52
Я делаю онлайн игру. Так как никаких языков кроме Вужуал Бэйсик 6 не знаю то решил делать на нём. Сервер решил сделать на пхп , а связать его с вб
через mysql.
вопрос как заставить вб отправить и считать данные с базы данных.(ну или объясните как работает вот этот код)

Private Sub myodbc_ado_Click()

Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim fld As ADODB.Field
Dim sql As String

'connect to MySQL server using Connector/ODBC
Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};"_
& "SERVER=localhost;"_
& " DATABASE=test;"_
& "UID=venu;PWD=venu; OPTION=3"

conn.Open

'create table
conn.Execute "DROP TABLE IF EXISTS my_ado"
conn.Execute "CREATE TABLE my_ado(id int not null primary key, name varchar(20)," _
& "txt text, dt date, tm time, ts timestamp)"

'direct insert
conn.Execute "INSERT INTO my_ado(id,name,txt) values(1,100,'venu')"
conn.Execute "INSERT INTO my_ado(id,name,txt) values(2,200,'MySQL')"
conn.Execute "INSERT INTO my_ado(id,name,txt) values(3,300,'Delete')"

Set rs = New ADODB.Recordset
rs.CursorLocation = adUseServer

'fetch the initial table ..
rs.Open "SELECT * FROM my_ado", conn
Debug.Print rs.RecordCount
rs.MoveFirst
Debug.Print String(50, "-") & "Initial my_ado Result Set " & String(50, "-")
For Each fld In rs.Fields
Debug.Print fld.Name,
Next
Debug.Print

Do Until rs.EOF
For Each fld In rs.Fields
Debug.Print fld.Value,
Next
rs.MoveNext
Debug.Print
Loop
rs.Close

'rs insert
rs.Open "select * from my_ado", conn, adOpenDynamic, adLockOptimistic
rs.AddNew
rs!Name = "Monty"
rs!txt = "Insert row"
rs.Update
rs.Close

'rs update
rs.Open "SELECT * FROM my_ado"
rs!Name = "update"
rs!txt = "updated-row"
rs.Update
rs.Close

'rs update second time..
rs.Open "SELECT * FROM my_ado"
rs!Name = "update"
rs!txt = "updated-second-time"
rs.Update
rs.Close

'rs delete
rs.Open "SELECT * FROM my_ado"
rs.MoveNext
rs.MoveNext
rs.Delete
rs.Close

'fetch the updated table ..
rs.Open "SELECT * FROM my_ado", conn
Debug.Print rs.RecordCount
rs.MoveFirst
Debug.Print String(50, "-") & "Updated my_ado Result Set " & String(50, "-")
For Each fld In rs.Fields
Debug.Print fld.Name,
Next
Debug.Print

Do Until rs.EOF
For Each fld In rs.Fields
Debug.Print fld.Value,
Next
rs.MoveNext
Debug.Print
Loop
rs.Close
conn.Close
End Sub

заранее спасибо
Ответы (14)
ava
Akina | 27.03.2013, 15:01 #
Цитата (exepir @  27.3.2013,  15:52 findReferencedText)
или объясните как работает вот этот код

Загрузите этот код в метод контрола в GUI.
Одновременно откройте окно консоли MySQL.
Выполняйте процедуру пошагово. После каждого шага смотрите через консоль на то, какие изменения произошли на сервере (список таблиц в БД, структура таблиц, данные в таблицах), и соотносите выполненный код с произошедшими изменениями.
ava
Akina | 27.03.2013, 15:18 #
Есть ещё пара минорных ошибок - при трассировке они выплывут. Поправите.
ava
exepir | 28.03.2013, 08:25 #
я конечно ивиняюсь за нубство но у меня нет в компонентах Microsoft ActiveX Data Object Library smile 
ava
Akina | 28.03.2013, 08:45 #
Эммм...
ava
exepir | 28.03.2013, 09:44 #
спасибо Akina  smile 
ava
exepir | 28.03.2013, 13:01 #
эээ новая проблема как только отладчик доходит до

conn.open

он пишет Источник данных не найден и не указан драйвер используемый по умолчанию
 smile 
вроде всё нормально указал ADO library 2.0 установил mysql odbc control 5.1
что не так
ava
Akina | 28.03.2013, 13:10 #
1) Библиотеку надо было подключать самую свежую. У меня на скрине, например, это 2.8.
2) Что такое "mysql odbc control 5.1"?
3) У тебя вообще MySQL ODBC Connector установлен? если да - какой версии? и какая версия драйвера доступа? 
ava
exepir | 28.03.2013, 13:15 #
коннектор установлен версии 5.1 я просто ошибся с написанием
драйвер сщас переставлю  меня самый свежий 6.1
ava
exepir | 28.03.2013, 13:41 #
та же проблема какой драйвер не ставлю вылетает та же ошибка
может я не так сделал
вот весь код и картинки

Private Sub Command1_Click()
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim fld As ADODB.Field
Dim sql As String
'connect to MySQL server using Connector/ODBC
Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" & "SERVER=localhost ;" & " DATABASE=w_db;" & "UID=root;PWD=; OPTION=3"
conn.Open
'create table
conn.Execute "DROP TABLE IF EXISTS my_ado"
conn.Execute "CREATE TABLE my_ado(id int not null primary key, name varchar(20)," _
& "txt text, dt date, tm time, ts timestamp)"
'direct insert
conn.Execute "INSERT INTO my_ado(id,name,txt) values(1,100,'venu')"
conn.Execute "INSERT INTO my_ado(id,name,txt) values(2,200,'MySQL')"
conn.Execute "INSERT INTO my_ado(id,name,txt) values(3,300,'Delete')"
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseServer
'fetch the initial table ..
rs.Open "SELECT * FROM my_ado", conn
Debug.Print rs.RecordCount
rs.MoveFirst
Debug.Print String(50, "-") & "Initial my_ado Result Set " & String(50, "-")
For Each fld In rs.Fields
Debug.Print fld.Name,
Next
Debug.Print
Do Until rs.EOF
For Each fld In rs.Fields
Debug.Print fld.Value,
Next
rs.MoveNext
Debug.Print
Loop
rs.Close
'rs insert
rs.Open "select * from my_ado", conn, adOpenDynamic, adLockOptimistic
rs.AddNew
rs!Name = "Monty"
rs!txt = "Insert row"
rs.Update
rs.Close
'rs update
rs.Open "SELECT * FROM my_ado"
rs!Name = "update"
rs!txt = "updated-row"
rs.Update
rs.Close
'rs update second time..
rs.Open "SELECT * FROM my_ado"
rs!Name = "update"
rs!txt = "updated-second-time"
rs.Update
rs.Close
'rs delete
rs.Open "SELECT * FROM my_ado"
rs.MoveNext
rs.MoveNext
rs.Delete
rs.Close
'fetch the updated table ..
rs.Open "SELECT * FROM my_ado", conn
Debug.Print rs.RecordCount
rs.MoveFirst
Debug.Print String(50, "-") & "Updated my_ado Result Set " & String(50, "-")
For Each fld In rs.Fields
Debug.Print fld.Name,
Next
Debug.Print
Do Until rs.EOF
For Each fld In rs.Fields
Debug.Print fld.Value,
Next
rs.MoveNext
Debug.Print
Loop
rs.Close
conn.Close
End Sub

user posted image
user posted image
ava
Akina | 28.03.2013, 13:55 #
Цитата (exepir @  28.3.2013,  14:41 findReferencedText)
вот весь код и картинки

Ну и нахрен они кому нужны? проще было проект зипануть да выложить...

Возвращайся на http://forum.vingrad.ru/index.php?showtopi...t&p=2555718 и проверяй, выполнил ли ты то, что написано в PPPS.
ava
exepir | 28.03.2013, 14:09 #
спасибо всё теперь работает  smile
ava
exepir | 29.03.2013, 19:58 #
ещё вопрос не совсем по теме
мне нужно отправить содержимое textboxа но mysql ругается что нету ковычек что делать?
ava
Akina | 29.03.2013, 22:52 #
Цитата (exepir @  29.3.2013,  20:58 findReferencedText)
что делать? 

Перечитать Правила Форума, особенно п. 10.
ava
exepir | 30.03.2013, 09:13 #
всё понял вопросов больше нет
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
  Akina   exepir
advanced
Отправить