WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Как только вы сформировали DSN, чтобы обеспечить доступ к базе данных, как
вы получаете доступ и используете эту связь, зависит от приложения или языка
программирования. Поскольку ODBC стандартизированный интерфейс, любое
приложение или язык, который поддерживает ODBC, могут использовать DSN и
соединиться с базой данных. Взаимодействие с сервером MySQL из приложения, используя Connector/ODBC,
как правило, включает следующие операции: Настройка Connector/ODBC DSN. Соединение с MySQL server. Это могло бы включать: установку обработчика окружения, выяснение версии
ODBC, размещение обработчика соединения, связь с сервером и
определение атрибутов соединения. Запросы инициализации. Это могло бы включать: размещение обработчика запросов и
установку их атрибутов. Выполнение SQL-операторов. Это могло бы включать: подготовку и выполнение SQL-оператора или
выполнение его непосредственно без подготовки. Получение результата, в зависимости от типа запроса.
Для SELECT / SHOW / Catalog API результаты могли бы включать:
число столбцов, информацию о столбцах, получение строк и получение данных в
буфера. Для Delete / Update / Insert результаты могли бы включать
число задействованных строк.
Выполнение транзакций, передача или отмена. Отсоединение от сервера. Это могло бы включать: разъединение связи и освобождение обработчиков.
Большинство запросов использует некоторое изменение этих шагов.
Основные прикладные шаги также показывают в следующей диаграмме: Рис. 6.1. Блок-схема программирования Connector/ODBC Типичная ситуация, где вы установили бы Connector/ODBC, должна получить
доступ к базе данных на хосте Linux или Unix с машины Windows. Как пример процесса, требуемого, чтобы настраивать доступ между двумя
машинами, рассмотрим основные шаги. Эти инструкции предполагают, что вы
соединяете с системой ALPHA от системы BETA с именем пользователя и паролем
На системе ALPHA (сервер MySQL) выполняют эти шаги: Запустите сервер MySQL.
Используйте Для получения дополнительной информации о привилегиях MySQL, обратитесь к
Access Control and Account Management. На системе BETA (клиент Connector/ODBC), выполните эти шаги: Настройте Connector/ODBC DSN с
использованием параметров, которые соответствуют серверу, базе данных и
информации аутентификации, что вы только что формировали на системе ALPHA.
Используя ODBC-приложение, такое как Microsoft
Office, соединяются с сервером MySQL, используя DSN, который вы только что
создали. Если связь прерывается, используйте трассировку, чтобы исследовать
процесс связи. Посмотрите
раздел 5.8.
Как только вы сформировали свой Connector/ODBC DSN,
можно получить доступ к базе данных MySQL через любое приложение, которое
поддерживает интерфейс ODBC, включая языки программирования.
Этот раздел содержит помощь при использовании Connector/ODBC с различными
ODBC-совместимыми инструментами, включая
Microsoft Word, Microsoft Excel и Adobe/Macromedia ColdFusion. Connector/ODBC был проверен со следующими приложениями: Можно использовать базу данных MySQL с Microsoft Access, используя
Connector/ODBC. База данных MySQL может использоваться в качестве источника
импорта, экспортного источника или в качестве связанной таблицы для прямого
использования в Access, таким образом, можно использовать Access как
интерфейс к базе данных MySQL. Удостоверьтесь, что информация, которую вы экспортируете в MySQL
действительна для соответствующих типов данных MySQL.
Значения, которые действительны в Access, но за пределами поддержанных типов
данных MySQL, могут вызвать ошибку overflow. Чтобы экспортировать таблицу из Access в MySQL,
следуйте этим инструкциям: С открытой базой данных Access
в правой части экрана показаны, среди прочего, все таблицы
в базе данных, которые доступны для экспорта (если это не так, поправьте
параметры настройки показа навигатора). Щелкните правой кнопкой мыши по
таблице, которую вы хотите экспортировать, и в меню, которое появляется,
выберите Рис. 6.2. Access: меню Export ODBC Database Откроется окно Export.
Введите желаемое имя для таблицы после импорта в сервер
MySQL и нажмите . Рис. 6.3. Ввод имени для экспортируемой таблицы Появится диалоговое окно
Select Data Source,
это перечисляет указанные источники данных для любых драйверов ODBC,
установленных на вашем компьютере. Щелкните
File Data Source или Machine Data Source
и затем дважды щелкните по Connector/ODBC DSN, в который вы хотите
экспортировать таблицу. Чтобы определить новый DSN для Connector/ODBC вместо
этого, нажмите и следуйте инструкциям в
разделе 5.3
, дважды щелкните по новому DSN после того, как он будет создан. Рис. 6.4. Выбор базы данных ODBC Если источник данных ODBC, который вы выбрали, требует, чтобы вы
авторизовались, ввежите login ID и пароль, затем нажмите
Появляется диалоговое окно с сообщением успеха, если
экспорт успешен. В диалоговом окне вы можете сохранить
экспортные шаги для легких повторений в будущем. Рис. 6.5. Сообщение об успехе Если вы видите следующее сообщение об ошибке вместо этого, когда вы
пытаетесь экспортировать в Connector/ODBC DSN, это означает, что вы не
выбрали Database (см.
раздел 5.3)
или выберите Database,
когда вы авторизовались в DSN. Рис. 6.6. Ошибка: Database Not Selected Следуйте этим инструкциям: Откройте базу данных Access, в которую
хотите импортировать данные MySQL. Во вкладке Рис. 6.7. External Data: ODBC Database В диалоге Рис. 6.8. Get External Data: ODBC Database
Откроется диалог Select Data Source.
Это перечисляет указанные источники данных для любых драйверов ODBC,
установленных на вашем компьютере. Щелкните
File Data Source или
Machine Data Source и затем дважды щелкните по
Connector/ODBC DSN, из которого вы хотите импортировать свои данные.
Чтобы определить новый DSN для Connector/ODBC вместо этого, нажмите
и следуйте инструкциям в
разделе 5.3
, дважды щелкните по новому DSN после того, как он будет создан. Рис. 6.9. Диалог Select Data Source Если источник данных ODBC, который вы выбрали, требует, чтобы вы
авторизовались, введите данные и нажмите
Microsoft Access соединяется с сервером MySQL и
показывает список таблиц (объекты), которые можно импортировать. Выберите
таблицы , которые вы хотите импортировать из этого диалога объектов импорта
(или нажмите Рис. 6.10. Диалог Import Objects Если никакие таблицы не показаны, это могло бы
быть потому, что вы не выбрали Database (см.
раздел 5.3)
или выберите Database, когда
вы авторизовались в DSN. Если у вашей базы данных Access уже есть таблица
с тем же самым именем как та, что вы импортируете, Access добавит число к
названию импортированной таблицы. Диалоговое окно появляется с сообщением успеха, если
импорт успешен. В диалоговом окне вы можете сохранить
шаги импорта для легких повторений в будущем. Рис. 6.11. Получены внешние данные Можно использовать Microsoft Access в качестве интерфейса к MySQL,
связывая таблицы в базе данных Microsoft Access с таблицами, которые
существуют в базе данных MySQL. Когда запрос требует таблицу в Access, ODBC
используется, чтобы выполнить запрос на базе данных MySQL. Создать связанную таблицу: Откройте базу данных Access, которую вы
хотите связать с MySQL. На вкладке Рис. 6.12. Внешние данные: базы данных ODBC В диалоге Рис. 6.13. Связь с базой данных ODBC
В диалоге Select Data Source
перечисляются указанные источники данных для любых драйверов ODBC,
установленных на вашем компьютере. Щелкните
File Data Source или
Machine Data Source и затем дважды щелкните по
Connector/ODBC DSN, с которым вы хотите связать свою таблицу.
Чтобы определить новый DSN для Connector/ODBC вместо этого, нажмите
и следуйте инструкциям в
разделе 5.3
, дважды щелкните по новому DSN после того, как он будет создан. Рис. 6.14. Выбор базы данных Если источник данных ODBC, который вы выбрали, требует, чтобы вы
авторизовались, введите данные и нажмите
Microsoft Access соединяется с сервером MySQL и
показывает список таблиц, с которыми можно связаться. Выберите таблицы
(или нажмите Рис. 6.15. Диалог Link Tables Если нет таблиц для выбора,
это могло бы быть потому, что вы не выбрали
Database (см.
раздел 5.3)
или выберите Database, когда
вы авторизовались в DSN. Если у вашей базы данных в Access уже есть таблица
с тем же самым именем, Access добавит число к названию
новой связанной таблицы. Если Microsoft Access будет неспособен определить
уникальный идентификатор записи для таблицы автоматически, это попросит,
чтобы вы выбрали столбец (или комбинацию столбцов), чтобы использовать,
чтобы однозначно определить каждую строку от исходной таблицы.
Выберите столбец и нажмите Рис. 6.16. Выбор уникального идентификатора записи Как только процесс был закончен, можно построить интерфейсы и запросы
к связанным таблицам, как для любой базы данных Access. Используйте следующую процедуру, чтобы рассмотреть связи или освежить их,
когда структуры связанных таблиц изменятся. Откройте базу данных, которая
содержит связи с MySQL. На вкладке Рис. 6.17. Linked Table Manager Выберите опцию для таблиц, связи которых вы хотите
освежить. Нажмите Рис. 6.18. Дилаог Linked Table Manager Microsoft Access подтверждает успешное обновление или
возвращает сообщение об ошибке, в этом случае необходимо обновить связи
по шагам ниже. Чтобы изменить путь для связанных таблиц
: Откройте базу данных, которая
содержит связанные таблицы. На вкладке В Always Prompt
For A New Location. Выберите опцию для таблиц, связи которых вы хотите
изменить, затем нажмите В диалоге Select Data Source
выберите новый DSN и базу данных с ним. Можно использовать Microsoft Word и Microsoft Excel, чтобы получить доступ
к информации от базы данных MySQL, используя Connector/ODBC.
В Microsoft Word это средство является самым полезным, импортируя данные для
автоматического составления стандартных писем, или для таблиц
и данных, которые будут включены в отчеты. В Microsoft Excel можно выполнить
запросы на сервере MySQL и импортировать данные непосредственно в рабочий
лист Excel, представив данные как серию строк и столбцов. С обоими приложениями к данным получают доступ и импортируют через
Microsoft Query, который позволяет вам
выполнить запрос через источник ODBC. Вы используете Microsoft Query, чтобы
построить SQL-оператор, который будет выполнен, выбирая таблицы, поля,
критерии выбора и порядок сортировки. Например, чтобы вставить информацию
из таблицы в базу данных World в электронную таблицу Excel, используя образцы
DSN, показанные в главе 5: Создайте новый рабочий лист. Из меню Запустится Microsoft Query
. Необходимо выбрать источник данных, выбрав существующее
имя источника данных. Рис. 6.19. Microsoft Query Wizard В Рис. 6.20. Выбор столбцов Можно отфильтровать строки в запросе
(эквивалент Рис. 6.21. Microsoft Query Wizard: Filter Data Выберите (дополнительный) порядок сортировки для
данных. Это эквивалентно использованию Рис. 6.22. Microsoft Query Wizard: порядок сортировки Выберите место назначения для своего запроса.
Можно выбрать возвратить данные Microsoft Excel, где можно выбрать рабочий
лист и ячейку, где данные будут вставлены, можно продолжить рассматривать
запрос и результаты в Microsoft Query, где можно отредактировать SQL-запрос и
дальнейший фильтр и отсортировать возвращенную информацию, или можно создать
OLAP Cube из запроса, который может тогда использоваться непосредственно в
Microsoft Excel. Нажмите Рис. 6.23. Microsoft Query Wizard: выбор назначения Тот же самый процесс может использоваться, чтобы импортировать данные в
документ Word, где данные будут вставлены как таблица.
Это может использоваться в целях слияния (где полевые данные прочитаны из
таблицы Word), или где вы хотите включать данные в рамках отчета
или другого документа. Crystal Reports может использовать ODBC DSN, чтобы соединиться с базой
данных, чтобы извлечь данные и информацию для сообщения о целях. Есть известная проблема с определенными версиями Crystal Reports, где
приложение не способно открыть и просмотреть таблицы и поля посредством связи
ODBC. Перед использованием Crystal Reports с MySQL, пожалуйста, гарантируйте,
чтобы у вас было обновление последней версии, включая любые пакеты обновления
и текущие исправления. Для получения дополнительной информации об
этой проблеме посмотрите
Business) Objects Knowledgebase. Например, чтобы создать простой отчет с перекрестными ссылками в рамках
Crystal Reports XI: Создайте DSN с использованием
В целях этого примера был создан DSN, который обеспечивает связь с
базой данных MySQL Sakila. Откройте Crystal Reports
и создайте новый проект или откройте существующий, в который вы хотите
вставить данные из своего источника данных MySQL. Запустите Cross-Tab Report Wizard,
щелкнув по выбору на Start Page. Разверните папку
Create New Connection, затем
ODBC (RDO), чтобы получить список
источников данных ODBC. Вас попросят выбрать источник данных. Рис. 6.24. Cross-Tab Report Creation Wizard Когда откроете папку ODBC
(RDO), увидите экран Data Source Selection.
Отсюда можно выбрать предварительно сконфигурированный DSN, открыть
основанный на файле DSN или ввести строку подключения. Для этого примера
будет использоваться предварительно
сконфигурированный Sakila DSN. Если DSN содержит имя пользователя/пароль, или вы хотите использовать
иной способ авторизации, нажмите Рис. 6.25. ODBC (RDO) Data Source Selection Wizard Вы будете возвращены в Cross-Tab Report Creation
Wizard. Теперь необходимо выбрать базу данных и таблицы, которые вы хотите
включить в ваш отчет. Для нашего примера мы расширим отобранную базу данных
Sakila. Щелкните таблицу Наконец, можно выбрать родительский ресурс
Sakila и добавить табьлицы к отчету. Как только вы выбрали таблицы, нажмите Рис. 6.26. Cross-Tab Report Creation Wizard с примером ODBC (RDO)
Crystal Reports теперь прочитает определения таблицы
и автоматически определит связи между таблицами. Идентификация связей между
ними позволяет Crystal Reports автоматически искать и суммировать информацию
на основе всех таблиц в базе данных, согласно вашему запросу.
Если Crystal Reports неспособен выполнить соединение, можно вручную создать
связи между полями в таблицах, которые вы выбрали. Нажмите на Рис. 6.27. Cross-Tab Report Creation Wizard Можно теперь выбрать столбцы и строки, чтобы включить
в рамки отчета с перекрестными ссылками. Перетащите или примените кнопки
Нажмите Рис. 6.28. Cross-Tab Report Creation Wizard: диалог
Cross-Tab Selection Законченный отчет покажет
образец вывода от базы данных-образца Sakila. Рис. 6.29. Cross-Tab Report Creation Wizard: итоговый отчет Как только связь ODBC была открыта в рамках Crystal Reports, можно
просмотреть и добавить любые поля в доступных таблицах в отчеты. С подходящим менеджером ODBC и установленным драйвером Connector/ODBC
любой язык программирования или окружающая среда, которая может поддержать
ODBC, могут соединиться с базой данных MySQL через Connector/ODBC. Это включает, но не ограничивается, языками Microsoft
(включая Visual Basic, C# и такие интерфейсы, как ODBC.NET),
Perl (через модуль DBI и драйвер DBD::ODBC). Этот раздел содержит простые примеры использования Connector/ODBC с
ADO, DAO и RDO. Следующий пример ADO (ActiveX Data Objects) составляет таблицу
table Следующий пример DAO (Data Access Objects) составляет таблицу
table Следующий пример RDO (Remote Data Objects) составляет таблицу
Этот раздел содержит простые примеры, которые демонстрируют использование
драйверов Connector/ODBC с ODBC.NET. Следующий образец составляет таблицу
Следующий образец составляет таблицу
Глава 6. Примеры Connector/ODBC
6.1. Основные шаги приложения Connector/ODBC
6.2. Пошаговое руководство к соединению с базой данных MySQL
через Connector/ODBC
myuser
и
mypassword
.GRANT
, чтобы настроить
учетку с именем пользователя myuser
, который
может соединиться от системы BETA, используя пароль
myuser
к базе данных
test
:
GRANT ALL ON test.* to 'myuser'@'BETA' IDENTIFIED BY 'mypassword';
Параметр
Значение
Комментарий DSN remote_test
Имя, чтобы определить связь. SERVER ALPHA
Адрес удаленного сервера. DATABASE test
Название базы данных по умолчанию. USER myuser
Имя пользователя для доступа к этой базе данных. PASSWORD mypassword
Пароль для логина
myuser
.
6.3. Connector/ODBC и сторонние утилиты ODBC
Разработчик
Приложение
Замечания Adobe ColdFusion
Раньше Macromedia ColdFusion Borland C++ Builder Builder 4 Delphi Business Objects Crystal Reports Claris Filemaker Pro Corel Paradox Computer Associates Visual Objects
Также известно как CAVO AllFusion ERwin Data Modeler Gupta Team Developer
Ранее известный как Centura Team Developer, Gupta SQL/Windows Gensym G2-ODBC Bridge Inline iHTML Lotus Notes Версии 4.5 и 4.6 Microsoft Access Excel Visio Enterprise Visual C++ Visual Basic ODBC.NET
Для C#, Visual Basic, C++ FoxPro Visual Interdev OpenOffice.org OpenOffice.org Perl DBD::ODBC Pervasive Software DataJunction Sambar Technologies Sambar Server SPSS SPSS SoftVelocity Clarion SQLExpress SQLExpress for Xbase++ Sun StarOffice SunSystems Vision Sybase PowerBuilder PowerDesigner theKompany.com Data Architect
6.4. Connector/ODBC и Microsoft Access
6.4.1. Экспорт из Access в MySQL
6.4.2. Импорт из MySQL в Access
Get External Data
выберите Import the source data into
a new table in the current database и нажмите
.
6.4.3. Microsoft Access как интерфейс MySQL
Get External Data
выберите Link to the data source by
creating a linked table и нажмите
.
6.5. Connector/ODBC и Microsoft Word или Excel
Data
выберите Import External Data
и
New Database Query
.Query Wizard
выберите столбцы, чтобы импортировать. Список таблиц, доступных пользователю,
через DSN, показывают слева, столбцы, которые будут добавлены к вашему
запросу, показывают справа. Столбцы, которые вы выбираете, эквивалентны тем в
первом разделе запроса SELECT
.
Нажмите .WHERE
), используя диалог
Filter Data
.ORDER BY
в вашем SQL-запросе. Можно выбрать до трех областей для сортировки
информации, возвращенной запросом.
6.6. Connector/ODBC и Crystal Reports
Data Sources (ODBC)
.
Можно определить полную базу данных, включая имя пользователя и пароль или
можно построить основной DSN и использовать Crystal Reports, чтобы установить
имя пользователя и пароль.city
и используйте
кнопку , чтобы добавить таблицу
к отчету. Повторите действие с таблицей country
.
Альтернативно можно выбрать много таблиц и добавить их к отчету.
6.7. Программирование Connector/ODBC
6.7.1. Connector/ODBC с Visual Basic, используя ADO, DAO и RDO
6.7.1.1. ADO:
rs.addNew
,
rs.delete
и
rs.update
my_ado
и демонстрирует использование
rs.addNew
,
rs.delete
и
rs.update
.
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!ID = 8
rs!Name = "Mandy"
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
6.7.1.2. DAO:
rs.addNew
,
rs.update
и скроллингmy_dao
, демонстрирует использование
rs.addNew
,
rs.update
и скроллинга набора результатов.
Private Sub myodbc_dao_Click()
Dim ws As Workspace
Dim conn As Connection
Dim queryDef As queryDef
Dim str As String
'connect to MySQL using MySQL ODBC 3.51 Driver
Set ws = DBEngine.CreateWorkspace("", "venu", "venu", dbUseODBC)
str = "odbc;DRIVER={MySQL ODBC 3.51 Driver};"_
& "SERVER=localhost;"_
& " DATABASE=test;"_
& "UID=venu;PWD=venu; OPTION=3"
Set conn = ws.OpenConnection("test", dbDriverNoPrompt, False, str)
'Create table my_dao
Set queryDef = conn.CreateQueryDef("", "drop table if exists my_dao")
queryDef.Execute
Set queryDef = conn.CreateQueryDef("", "create table my_dao(Id INT AUTO_INCREMENT PRIMARY KEY, " _
& "Ts TIMESTAMP(14) NOT NULL, Name varchar(20), Id2 INT)")
queryDef.Execute
'Insert new records using rs.addNew
Set rs = conn.OpenRecordset("my_dao")
Dim i As Integer
For i = 10 To 15
rs.AddNew
rs!Name = "insert record" & i
rs!Id2 = i
rs.Update
Next i
rs.Close
'rs update.
Set rs = conn.OpenRecordset("my_dao")
rs.Edit
rs!Name = "updated-string"
rs.Update
rs.Close
'fetch the table back...
Set rs = conn.OpenRecordset("my_dao", dbOpenDynamic)
str = "Results:"
rs.MoveFirst
While Not rs.EOF
str = " " & rs!Id & " , " & rs!Name & ", " & rs!Ts & ", " & rs!Id2
Debug.Print "DATA:" & str
rs.MoveNext
Wend
'rs Scrolling
rs.MoveFirst
str = " FIRST ROW: " & rs!Id & " , " & rs!Name & ", " & rs!Ts & ", " & rs!Id2
Debug.Print str
rs.MoveLast
str = " LAST ROW: " & rs!Id & " , " & rs!Name & ", " & rs!Ts & ", " & rs!Id2
Debug.Print str
rs.MovePrevious
str = " LAST-1 ROW: " & rs!Id & " , " & rs!Name & ", " & rs!Ts & ", " & rs!Id2
Debug.Print str
'free all resources
rs.Close
queryDef.Close
conn.Close
ws.Close
End Sub
6.7.1.3. RDO:
rs.addNew
и
rs.update
my_rdo
и демонстрирует использование
rs.addNew
и
rs.update
.
Dim rs As rdoResultset
Dim cn As New rdoConnection
Dim cl As rdoColumn
Dim SQL As String
'cn.Connect = "DSN=test;"
cn.Connect = "DRIVER={MySQL ODBC 3.51 Driver};"_
& "SERVER=localhost;"_
& " DATABASE=test;"_
& "UID=venu;PWD=venu; OPTION=3"
cn.CursorDriver = rdUseOdbc
cn.EstablishConnection rdDriverPrompt
'drop table my_rdo
SQL = "drop table if exists my_rdo"
cn.Execute SQL, rdExecDirect
'create table my_rdo
SQL = "create table my_rdo(id int, name varchar(20))"
cn.Execute SQL, rdExecDirect
'insert - direct
SQL = "insert into my_rdo values (100,'venu')"
cn.Execute SQL, rdExecDirect
SQL = "insert into my_rdo values (200,'MySQL')"
cn.Execute SQL, rdExecDirect
'rs insert
SQL = "select * from my_rdo"
Set rs = cn.OpenResultset(SQL, rdOpenStatic, rdConcurRowVer, rdExecDirect)
rs.AddNew
rs!id = 300
rs!Name = "Insert1"
rs.Update
rs.Close
'rs insert
SQL = "select * from my_rdo"
Set rs = cn.OpenResultset(SQL, rdOpenStatic, rdConcurRowVer, rdExecDirect)
rs.AddNew
rs!id = 400
rs!Name = "Insert 2"
rs.Update
rs.Close
'rs update
SQL = "select * from my_rdo"
Set rs = cn.OpenResultset(SQL, rdOpenStatic, rdConcurRowVer, rdExecDirect)
rs.Edit
rs!id = 999
rs!Name = "updated"
rs.Update
rs.Close
'fetch back...
SQL = "select * from my_rdo"
Set rs = cn.OpenResultset(SQL, rdOpenStatic, rdConcurRowVer, rdExecDirect)
Do Until rs.EOF
For Each cl In rs.rdoColumns
Debug.Print cl.Value,
Next
rs.MoveNext
Debug.Print
Loop
Debug.Print "Row count="; rs.RowCount
'close
rs.Close
cn.Close
End Sub
6.7.2. Connector/ODBC с .NET
6.7.2.1. Connector/ODBC с ODBC.NET и C# (C sharp)
my_odbc_net
и
демонстрирует ее использование в C#.
/**
* @sample: mycon.cs
* @purpose : Demo sample for ODBC.NET using Connector/ODBC
*
**/
/* build command
*
*csc /t:exe
*/out:mycon.exe mycon.cs
*/r:Microsoft.Data.Odbc.dll
*/
using Console = System.Console;
using Microsoft.Data.Odbc;
namespace myodbc3
{
class mycon
{
static void Main(string[] args)
{
try
{
//Connection string for Connector/ODBC 3.51
string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +
"SERVER=localhost;" +
"DATABASE=test;" +
"UID=venu;" +
"PASSWORD=venu;" +
"OPTION=3";
//Connect to MySQL using Connector/ODBC
OdbcConnection MyConnection = new OdbcConnection(MyConString);
MyConnection.Open();
Console.WriteLine("\n !!! success, connected successfully !!!\n");
//Display connection information
Console.WriteLine("Connection Information:");
Console.WriteLine("\tConnection String:" +
MyConnection.ConnectionString);
Console.WriteLine("\tConnection Timeout:" +
MyConnection.ConnectionTimeout);
Console.WriteLine("\tDatabase:" + MyConnection.Database);
Console.WriteLine("\tDataSource:" + MyConnection.DataSource);
Console.WriteLine("\tDriver:" + MyConnection.Driver);
Console.WriteLine("\tServerVersion:" + MyConnection.ServerVersion);
//Create a sample table
OdbcCommand MyCommand =
new OdbcCommand("DROP TABLE IF EXISTS my_odbc_net", MyConnection);
MyCommand.ExecuteNonQuery();
MyCommand.CommandText =
"CREATE TABLE my_odbc_net(id int, name varchar(20), idb bigint)";
MyCommand.ExecuteNonQuery();
//Insert
MyCommand.CommandText =
"INSERT INTO my_odbc_net VALUES(10,'venu', 300)";
Console.WriteLine("INSERT, Total rows affected:" +
MyCommand.ExecuteNonQuery());;
//Insert
MyCommand.CommandText =
"INSERT INTO my_odbc_net VALUES(20,'mysql',400)";
Console.WriteLine("INSERT, Total rows affected:" +
MyCommand.ExecuteNonQuery());
//Insert
MyCommand.CommandText =
"INSERT INTO my_odbc_net VALUES(20,'mysql',500)";
Console.WriteLine("INSERT, Total rows affected:" +
MyCommand.ExecuteNonQuery());
//Update
MyCommand.CommandText = "UPDATE my_odbc_net SET id=999 WHERE id=20";
Console.WriteLine("Update, Total rows affected:" +
MyCommand.ExecuteNonQuery());
//COUNT(*)
MyCommand.CommandText = "SELECT COUNT(*) as TRows FROM my_odbc_net";
Console.WriteLine("Total Rows:" + MyCommand.ExecuteScalar());
//Fetch
MyCommand.CommandText = "SELECT * FROM my_odbc_net";
OdbcDataReader MyDataReader;
MyDataReader =MyCommand.ExecuteReader();
while (MyDataReader.Read())
{
if (string.Compare(MyConnection.Driver,"myodbc3.dll") == 0)
{
//Supported only by Connector/ODBC 3.51
Console.WriteLine("Data:" + MyDataReader.GetInt32(0) + " " +
MyDataReader.GetString(1) + " " +
MyDataReader.GetInt64(2));
} else {
//BIGINTs not supported by Connector/ODBC
Console.WriteLine("Data:" + MyDataReader.GetInt32(0) + " " +
MyDataReader.GetString(1) + " " +
MyDataReader.GetInt32(2));
}
}
//Close all resources
MyDataReader.Close();
MyConnection.Close();
}
catch (OdbcException MyOdbcException) //Catch any ODBC exception.
{
for (int i=0; i < MyOdbcException.Errors.Count; i++)
{
Console.Write("ERROR #" + i + "\n" + "Message: " +
MyOdbcException.Errors[i].Message + "\n" +
"Native: " +
MyOdbcException.Errors[i].NativeError.ToString() +
"\n" + "Source: " +
MyOdbcException.Errors[i].Source + "\n" +
"SQL: " + MyOdbcException.Errors[i].SQLState + "\n");
}
}
}
}
}
6.7.2.2. Connector/ODBC с ODBC.NET и Visual Basic
my_vb_net
и использует ее в VB.
' @sample: myvb.vb
' @purpose : Demo sample for ODBC.NET using Connector/ODBC
'
' build command
'
' vbc /target:exe
' /out:myvb.exe
' /r:Microsoft.Data.Odbc.dll
' /r:System.dll
' /r:System.Data.dll
'
Imports Microsoft.Data.Odbc
Imports System
Module myvb
Sub Main()
Try
'Connector/ODBC 3.51 connection string
Dim MyConString As String = "DRIVER={MySQL ODBC 3.51 Driver};" & _
"SERVER=localhost;" & _
"DATABASE=test;" & _
"UID=venu;" & _
"PASSWORD=venu;" & _
"OPTION=3;"
'Connection
Dim MyConnection As New OdbcConnection(MyConString)
MyConnection.Open()
Console.WriteLine("Connection State::" & MyConnection.State.ToString)
'Drop
Console.WriteLine("Dropping table")
Dim MyCommand As New OdbcCommand()
MyCommand.Connection = MyConnection
MyCommand.CommandText = "DROP TABLE IF EXISTS my_vb_net"
MyCommand.ExecuteNonQuery()
'Create
Console.WriteLine("Creating....")
MyCommand.CommandText = "CREATE TABLE my_vb_net(id int, name varchar(30))"
MyCommand.ExecuteNonQuery()
'Insert
MyCommand.CommandText = "INSERT INTO my_vb_net VALUES(10,'venu')"
Console.WriteLine("INSERT, Total rows affected:" & _
MyCommand.ExecuteNonQuery())
'Insert
MyCommand.CommandText = "INSERT INTO my_vb_net VALUES(20,'mysql')"
Console.WriteLine("INSERT, Total rows affected:" & _
MyCommand.ExecuteNonQuery())
'Insert
MyCommand.CommandText = "INSERT INTO my_vb_net VALUES(20,'mysql')"
Console.WriteLine("INSERT, Total rows affected:" & _
MyCommand.ExecuteNonQuery())
'Insert
MyCommand.CommandText = "INSERT INTO my_vb_net(id) VALUES(30)"
Console.WriteLine("INSERT, Total rows affected:" & _
MyCommand.ExecuteNonQuery())
'Update
MyCommand.CommandText = "UPDATE my_vb_net SET id=999 WHERE id=20"
Console.WriteLine("Update, Total rows affected:" & _
MyCommand.ExecuteNonQuery())
'COUNT(*)
MyCommand.CommandText = "SELECT COUNT(*) as TRows FROM my_vb_net"
Console.WriteLine("Total Rows:" & MyCommand.ExecuteScalar())
'Select
Console.WriteLine("Select * FROM my_vb_net")
MyCommand.CommandText = "SELECT * FROM my_vb_net"
Dim MyDataReader As OdbcDataReader
MyDataReader = MyCommand.ExecuteReader
While MyDataReader.Read
If MyDataReader("name") Is DBNull.Value Then
Console.WriteLine("id = " & _
CStr(MyDataReader("id")) & "name = " & _
"NULL")
Else
Console.WriteLine("id = " & _
CStr(MyDataReader("id")) & "name = " & _
CStr(MyDataReader("name")))
End If
End While
'Catch ODBC Exception
Catch MyOdbcException As OdbcException
Dim i As Integer
Console.WriteLine(MyOdbcException.ToString)
'Catch program exception
Catch MyException As Exception
Console.WriteLine(MyException.ToString)
End Try
End Sub
Найди своих коллег! |
Вы можете направить письмо администратору этой странички, Алексею Паутову.