Spec-Zone .ru
спецификации, руководства, описания, API

21.1.7.2. Соединитель/ODBC Специализированные Подсказки

Большинство программ должно работать с Соединителем/ODBC, но для каждого из перечисленных здесь, есть определенные примечания и подсказки, чтобы улучшить или улучшить способ, которым Вы работаете с Соединителем/ODBC и этими приложениями.

Со всеми приложениями гарантируйте, что Вы используете последние драйверы Соединителя/ODBC, менеджера по ODBC и любые библиотеки поддержки и интерфейсы, используемые Вашим приложением. Например, на Windows, используя последнюю версию Microsoft Data Access Components (MDAC) улучшит совместимость с ODBC вообще, и с драйвером Соединителя/ODBC.

21.1.7.2.1. Используя Соединитель/ODBC с Microsoft Applications

Большинство приложений Microsoft было протестировано с Соединителем/ODBC, включая Microsoft Office, Microsoft Access и различные языки программирования, поддерживаемые в пределах ASP и Microsoft Visual Studio.

21.1.7.2.1.1. Microsoft Access

Улучшить интеграцию между Microsoft Access и MySQL через Соединитель/ODBC:

  • Для всех версий Доступа включите Соединителю/ODBC Return matching rows опция. Для Доступа 2.0, также включите Simulate ODBC 1.0 опция.

  • Включайте a TIMESTAMP столбец во всех таблицах, которые Вы хотите быть в состоянии обновить. Для максимальной мобильности не используйте спецификацию длины в объявлении столбца (который неподдерживается в пределах MySQL в версиях ранее чем 4.1).

  • Включайте первичный ключ в каждую таблицу MySQL, которую Вы хотите использовать с Доступом. В противном случае новые или обновленные строки могут обнаружиться как #DELETED#.

  • Используйте только DOUBLE поля плавающие. Доступ перестал работать, сравниваясь с плаваниями одинарной точности. Признак обычно - то, что новые или обновленные строки могут обнаружиться как #DELETED# или это невозможно найти или обновить строки.

  • Если Вы используете Соединитель/ODBC, чтобы соединиться с таблицей, у которой есть a BIGINT столбец, результаты выводятся на экран как #DELETED#. Работа вокруг решения:

    • Имейте еще один фиктивный столбец с TIMESTAMP как тип данных.

    • Выберите Change BIGINT columns to INT опция в диалоговом окне соединения в ODBC Администратор DSN.

    • Удалите табличную ссылку из Доступа и воссоздайте это.

    Старые записи могут все еще вывести на экран как #DELETED#, но недавно добавил/обновил, что записи выводятся на экран должным образом.

  • Если Вы все еще получаете ошибку Another user has changed your data после добавления a TIMESTAMP столбец, следующий прием может помочь Вам:

    Не используйте a table представление таблицы данных. Вместо этого создайте форму с полями, которые Вы хотите, и использование это form представление таблицы данных. Установите DefaultValue свойство для TIMESTAMP столбец к NOW(). Рассмотрите сокрытие TIMESTAMP столбец от представления так Ваши пользователи не путается.

  • В некоторых случаях Доступ может генерировать SQL-операторы, которые не может понять MySQL. Можно фиксировать это, выбирая "Query|SQLSpecific|Pass-Through" из меню Access.

  • На Windows NT, отчетах Доступа BLOB столбцы как OLE OBJECTS. Если Вы хотите иметь MEMO столбцы вместо этого, изменение BLOB столбцы к TEXT с ALTER TABLE.

  • Доступ не может всегда обрабатывать MySQL DATE столбец должным образом. Если Вы имеете проблему с ними, изменяете столбцы на DATETIME.

  • Если у Вас есть в Доступе столбец, определенный как BYTE, Доступ пытается экспортировать это как TINYINT вместо TINYINT UNSIGNED. Это дает Вам проблемы, если у Вас есть значения, больше чем 127 в столбце.

  • Если у Вас есть очень большие (длинные) таблицы в Доступе, могло бы потребоваться очень долгое время, чтобы открыть их. Или Вы могли бы испытать нехватку виртуальной памяти и в конечном счете добраться ODBC Query Failed ошибка и таблица не могут открыться. Чтобы иметь дело с этим, выберите следующие опции:

    • Возвратите Соответствие Строк (2)

    • Позвольте БОЛЬШИЕ Результаты (8).

    Они составляют в целом значение 10 (OPTION=10).

Некоторые внешние статьи и подсказки, которые могут быть полезными при использовании Доступа, ODBC и Соединителя/ODBC:

21.1.7.2.1.2. Microsoft Excel и Типы Столбца

Если у Вас есть проблемы, импортируя данные в Microsoft Excel, особенно числовой, дата, и временные стоимости, это, вероятно, из-за ошибки в Excel, где тип столбца исходных данных используется, чтобы определить тип данных, когда те данные вставляются в ячейку в пределах рабочего листа. Результат состоит в том, что Excel неправильно идентифицирует контент, и это влияет и на формат дисплея и на данные, когда это используется в пределах вычислений.

Чтобы решить эту проблему, используйте CONCAT() функционируйте в своих запросах. Использование CONCAT() Excel сил, чтобы обработать значение как строку, которая Excel тогда проанализирует и обычно правильно идентифицирует встроенную информацию.

Однако, даже с этой опцией, некоторые данные могут быть неправильно отформатированы, даже при том, что исходные данные остаются неизменными. Используйте Format Cells опция в пределах Excel, чтобы изменить формат выведенной на экран информации.

21.1.7.2.1.3. Microsoft Visual Basic

Чтобы быть в состоянии обновить таблицу, следует определить первичный ключ для таблицы.

Visual Basic с ADO не может обработать большие целые числа. Это означает что некоторые запросы как SHOW PROCESSLIST не работайте должным образом. Фиксация должна использовать OPTION=16384 в ODBC соединяют строку или выбрать Change BIGINT columns to INT опция в Соединителе/ODBC соединяет экран. Можно также хотеть выбрать Return matching rows опция.

21.1.7.2.1.4. Microsoft Visual InterDev

Если у Вас есть a BIGINT в Вашем результате можно получить ошибку [Microsoft][ODBC Driver Manager] Driver does not support this parameter. Попытайтесь выбрать Change BIGINT columns to INT опция в Соединителе/ODBC соединяет экран.

21.1.7.2.1.5. Визуальные объекты

Выберите Don't optimize column widths опция.

21.1.7.2.1.6. ADO Microsoft

Когда Вы кодируете с API ADO и Соединителем/ODBC, Вы должны обратить внимание на некоторые свойства значения по умолчанию, которые не поддерживаются сервером MySQL. Например, использование CursorLocation Property как adUseServer возвращает результат–1 для RecordCount Property. Чтобы иметь правильное значение, Вы должны установить это свойство в adUseClient, как показано в VB кодируют здесь:

Dim myconn As New ADODB.ConnectionDim myrs As New RecordsetDim mySQL As StringDim myrows As Longmyconn.Open "DSN=MyODBCsample"mySQL = "SELECT * from user"myrs.Source = mySQLSet myrs.ActiveConnection = myconnmyrs.CursorLocation = adUseClientmyrs.Openmyrows = myrs.RecordCountmyrs.Closemyconn.Close

Другое обходное решение должно использовать a SELECT COUNT(*) оператор для подобного запроса, чтобы получить корректное количество строки.

Чтобы счесть число строк влиявшим определенным SQL-оператором в ADO, используйте RecordsAffected свойство в ADO выполняет метод. Для получения дополнительной информации по использованию выполняют метод, обращаются к http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmthcnnexecute.asp.

Для получения информации см. ActiveX Data Objects (ADO) Часто Задаваемые Вопросы.

21.1.7.2.1.7. Используя Соединитель/ODBC с Активными Страницами Сервера (ASP)

Выберите Return matching rows опция в DSN.

Для получения дополнительной информации о том, как получить доступ к MySQL через ASP, используя Соединитель/ODBC, обратитесь к следующим статьям:

Часто Задаваемый список Вопросов для ASP может быть найден в http://support.microsoft.com/default.aspx?scid=/Support/ActiveServer/faq/data/adofaq.asp.

21.1.7.2.1.8. Используя Соединитель/ODBC с Visual Basic (ADO, DAO и RDO) и ASP

Некоторые статьи, которые могут помочь с Visual Basic и ASP:

21.1.7.2.2. Используя Соединитель/ODBC с Приложениями Borland

Со всеми приложениями Borland, где Механизм базы данных Borland (BDE) используется, следуйте за этими шагами, чтобы улучшить совместимость:

  • Обновление к BDE 3.2 или более новый.

  • Включите Don't optimize column widths опция в DSN.

  • Включенный Return matching rows опция в DSN.

21.1.7.2.2.1. Используя Соединитель/ODBC с Разработчиком Borland 4

Когда Вы запускаете запрос, можно использовать Active свойство или Open метод. Отметьте это Active запускается, автоматически выходя a SELECT * FROM ... запрос. Это, возможно, не хорошая вещь, если Ваши таблицы являются большими.

21.1.7.2.2.2. Используя Соединитель/ODBC с Delphi

Кроме того, вот некоторый потенциально полезный код Delphi, который устанавливает и запись ODBC и запись BDE для Соединителя/ODBC. Запись BDE требует Редактора Псевдонима BDE, который свободен в Delphi Страница Высшего качества около Вас. (Благодаря Брайану Брунтону для этого):

fReg:= TRegistry.Create;fReg.OpenKey('\Software\ODBC\ODBC.INI\DocumentsFab', True);fReg.WriteString('Database', 'Documents');fReg.WriteString('Description', ' ');fReg.WriteString('Driver', 'C:\WINNT\System32\myodbc.dll');fReg.WriteString('Flag', '1');fReg.WriteString('Password', '');fReg.WriteString('Port', ' ');fReg.WriteString('Server', 'xmark');fReg.WriteString('User', 'winuser');fReg.OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources', True);fReg.WriteString('DocumentsFab', 'MySQL');fReg.CloseKey;fReg.Free;Memo1.Lines.Add('DATABASE NAME=');Memo1.Lines.Add('USER NAME=');Memo1.Lines.Add('ODBC DSN=DocumentsFab');Memo1.Lines.Add('OPEN MODE=READ/WRITE');Memo1.Lines.Add('BATCH COUNT=200');Memo1.Lines.Add('LANGDRIVER=');Memo1.Lines.Add('MAX ROWS=-1');Memo1.Lines.Add('SCHEMA CACHE DIR=');Memo1.Lines.Add('SCHEMA CACHE SIZE=8');Memo1.Lines.Add('SCHEMA CACHE TIME=-1');Memo1.Lines.Add('SQLPASSTHRU MODE=SHARED AUTOCOMMIT');Memo1.Lines.Add('SQLQRYMODE=');Memo1.Lines.Add('ENABLE SCHEMA CACHE=FALSE');Memo1.Lines.Add('ENABLE BCD=FALSE');Memo1.Lines.Add('ROWSET SIZE=20');Memo1.Lines.Add('BLOBS TO CACHE=64');Memo1.Lines.Add('BLOB SIZE=32');AliasEditor.Add('DocumentsFab','MySQL',Memo1.Lines);
21.1.7.2.2.3. Используя Соединитель/ODBC с Разработчиком C++

Протестированный с BDE 3.0. Единственная известная проблема состоит в том, что, когда табличная схема изменяется, поля запроса не обновляются. BDE, однако, кажется, не распознает первичные ключи, только индексирование именованного PRIMARY, хотя это не было проблемой.

21.1.7.2.3. Используя Соединитель/ODBC с ColdFusion

Следующая информация берется из документации ColdFusion:

Используйте следующую информацию, чтобы сконфигурировать Сервер ColdFusion для Linux, чтобы использовать unixODBC драйвер с Соединителем/ODBC для источников данных MySQL. Можно загрузить Соединитель/ODBC в http://dev.mysql.com/downloads/connector/odbc/.

Версия 4.5.1 ColdFusion позволяет Вам использовать Администратора ColdFusion, чтобы добавить источник данных MySQL. Однако, драйвер не включается с версией 4.5.1 ColdFusion. Прежде, чем драйвер MySQL появляется в выпадающем списке источников данных ODBC, создайте и скопируйте драйвер Соединителя/ODBC в /opt/coldfusion/lib/libmyodbc.so.

Каталог Contrib содержит программу mydsn-xxx.zip который позволяет Вам создавать и удалять файл реестра DSN для драйвера Соединителя/ODBC на приложениях ColdFusion.

Для получения дополнительной информации и руководства при использовании ColdFusion и Соединителя/ODBC, см. следующие внешние сайты:

21.1.7.2.4. Используя Соединитель/ODBC с OpenOffice.org

Открытый Office (http://www.openoffice.org) С практическими рекомендациями: MySQL + OpenOffice. С практическими рекомендациями: OpenOffice + MyODBC + unixODBC.

21.1.7.2.5. Используя Соединитель/ODBC с Сервером Самбара

Сервер самбара (http://www.sambarserver.info) С практическими рекомендациями: MyODBC + SambarServer + MySQL.

21.1.7.2.6. Используя Соединитель/ODBC с Распространяющимся программным обеспечением DataJunction

Необходимо изменить это, чтобы вывести VARCHAR вместо ENUM, поскольку это экспортирует последнего способом, который вызывает проблемы MySQL.

21.1.7.2.7. Используя Соединитель/ODBC с Видением SunSystems

Выберите Return matching rows опция.