21.3 Support ODBC avec MySQL
21 API MySQL
Manuel de Référence MySQL 4.1 : Version Française
. Comment installer MyODBC . Comment remplir les différents champs dans le programme d'administrateur ODBC . Paramètres de connexion de MyODBC . Comment reporter les problèmes avec ODBC ->Programmes qui fonctionnent avec MyODBC . Comment obtenir la valeur d'une colonne AUTO_INCREMENT avec ODBC . Rapporter des problèmes avec MYODBC
|
21.3.5 Programmes qui fonctionnent avec MyODBC La majorité des programmes devraient fonctionner avec
MyODBC
, mais tous
ceux que nous avons listés ici sont ceux que nous avons testé nous même, ou dont
nous avons reçu la confirmation de la part d'utilisateurs :
-
Programme
-
Commentaire
-
Access
-
Pour le faire fonctionner avec Access :
-
ADO
-
Lorsque vous programmez avec l'API ADO et
MyODBC
vous devez faire attention
aux propriétés par défaut qui ne sont pas supportées par MySQL. Par exemple,
utiliser la propriété
CursorLocation Property
comme
adUseServer
va
retourner des valeurs de -1 pour
RecordCount Property
. Pour avoir la véritable
valeur, vous devez utiliser la valeur
adUseClient
, comme dans le code VB ci-contre :
Dim myconn As New ADODB.Connection Dim myrs As New Recordset Dim mySQL As String Dim myrows As Long myconn.Open "DSN=MyODBCsample" mySQL = "SELECT * from user" myrs.Source = mySQL Set myrs.ActiveConnection = myconn myrs.CursorLocation = adUseClient myrs.Open myrows = myrs.RecordCount myrs.Close myconn.Close
|
Un autre palliatif est d'utiliser la commande
SELECT COUNT(*)
,
pour connaître le nombre exact de lignes.
-
Active server pages (ASP)
-
Vous devez utiliser l'option
Return matching rows
.
-
Applications BDE
-
Pour faire fonctionner ces applications, vous devez activer les options
Don't optimize column widths
et
Return matching rows
.
-
Borland Builder 4
-
Lorsque vous démarrez une requête, vous pouvez utiliser la propriété
Active
ou utiliser la méthode
Open
. Notez que
Active
va commencer en générant automatiquement une requête
SELECT * FROM ...
qui
peut ne pas être pratique avec de grosses tables!
-
ColdFusion (On Unix)
-
Les informations suivantes sont reprises de la documentation ColdFusion :
Utilisez les informations suivantes pour configurer le serveur ColdFusion Server
sous Linux pour utiliser le pilote unixODBC avec
MyODBC
pour les
serveurs MySQL. Allaire a vérifié que
MyODBC
version 2.50.26
fonctionne avec MySQL version 3.22.27 et ColdFusion pour Linux. (toute nouvelle
version doit aussi fonctionner). Vous pouvez télécharger
MyODBC
à
http://www.mysql.com/downloads/api-myodbc.html
ColdFusion version 4.5.1 vous permet d'utiliser l'administrateur ColdFusion
pour ajouter des serveurs MySQL. Toutefois, le pilote n'est pas inclus dans
ColdFusion version 4.5.1. Auparavant, le pilote MySQL était disponible dans
le menu déroulant. Vous devez compiler et copier le pilote
MyODBC
dans
/opt/coldfusion/lib/libmyodbc.so
.
Le dossier Contrib contient le programme
mydsn-xxx.zip
qui vous permet
de compiler et supprimer des fichiers d'enregistrement DSN pour MyODBC sur les
applications Coldfusion.
-
DataJunction
-
Vous devez le modifier pour qu'il exporte des
VARCHAR
plutôt que des
ENUM
,
car il exporte ces derniers d'une manière qui pose des problèmes à MySQL.
-
Excel
-
Fonctionne. Quelques conseils :
-
Si vous avez des problèmes avec les dates, essayez de les sélectionner comme des
chaînes, en utilisant la fonction
CONCAT()
. Par exemple :
select CONCAT(rise_time), CONCAT(set_time) from sunrise_sunset;
|
Les valeurs lues sous forme de chaînes seront correctement relues par
Excel97.
Le but de la fonction
CONCAT()
est de faire croire à ODBC que cette colonne
est de type ``string''. Sans la fonction
CONCAT()
, ODBC sait que la colonne
est de type heure, et Excel ne le comprendra pas.
Notez qu'il y a un bug dans Excel, car il convertit automatiquement une chaîne
en heure. Cela serait bien si la source était un fichier texte, mais c'est
totalement idiot si la source est une connexion ODBC qui fournit les types
exacts.
-
Word
-
Pour lire des données depuis MySQL vers des documents Word ou Excel, vous devez
utiliser le pilote
MyODBC
et l'aide Add-in Microsoft Query.Par exemple, pour créer une base de données avec une table contenant 2 colonnes
de type texte :
-
Insérez des lignes avec le client
mysql
.
-
Créez un fichier DSN en utilisant le gestionnaire ODBC, par exemple,
my
pour la base ci-dessus.
-
Ouvrez Word.
-
Créez un nouveau document vide.
-
Utilisez la barre "Database", pressez sur le bouton d'insertion.
-
Pressez sur le bouton "Get Data".
-
Sur la droite de l'écran, choisissez le bouton "Ms Query".
-
Dans ce écran, créez une nouvelle source de données avec "New Data Source" et en utilisant le fichier
DSN
my
.
-
Sélectionner une nouvelle requête.
-
Sélectionnez les colonnes que vous souhaitez.
-
Faîtes votre filtre.
-
Faîtes votre tri.
-
Sélectionnez "Return Data" de Microsoft Word.
-
Cliquez sur "Finish".
-
Cliquez sur le bouton "Insert data" et sélectionnez les lignes.
-
Cliquez sur "OK" et vous verrez vous lignes dans votre document Word.
-
odbcadmin
-
Programme de test pour ODBC.
-
Delphi
-
Vous devez utiliser BDE version 3.2 ou plus récent. Utilisez l'option
Don't optimize column width
lors de la connexion à MySQL.
De plus, voici un code Delphi pratique, pour configurer une entrée ODBC et
une entrée BDE pour
MyODBC
(l'entrée BDE requiert le BDE
Alias Editor qui est gratuit sur les pages "Delphi Super Page" près de chez
vous. (Merci à Bryan Brunton bryan@flesherfab.com pour cela ) :
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);
|
-
C++ Builder
-
Testé avec BDE version 3.0. Le seul problème connu est que lorsque la structure
d'une table change, les champs de requêtes ne changent pas. BDE ne semble
pas reconnaître les clés primaires, mais uniquement l'index PRIMARY, même si
cela n'a jamais été un problème.
-
Vision
-
Vous devriez utiliser l'option
Return matching rows
.
-
Visual Basic
-
Pour être capable de modifier une table, vous devez définir une clé primaire.
Visual Basic avec ADO ne peut pas gérer les grands entiers. Cela signifie que
les requêtes comme
SHOW PROCESSLIST
ne vont pas fonctionner correctement. Le
correctif consiste à ajouter l'option
OPTION=16834
dans la chaîne de connexion
ODBC pour d'utiliser l'option
Change BIGINT columns to INT
de MyODBC.
Vous pouvez aussi utiliser l'option
Return matching rows
.
-
VisualInterDev
-
Si vous rencontrez l'erreur
[Microsoft][ODBC Driver Manager] Driver does
not support this parameter
, la raison est que vous avez un grand entier
BIGINT
dans votre résultat. Essayez d'utiliser l'option
Change BIGINT
columns to INT
de MyODBC.
-
Visual Objects
-
Vous devez utiliser l'option
Don't optimize column widths
.
|