J'essaie de me connecter à une base de données créée par MS Access en utilisant Java, mais je n'arrive pas à gérer. J'utilise ODBC et j'obtiens cette exception:
java.sql.SQLException: [Microsoft] [ODBC Driver Manager] Le DSN spécifié contient une incompatibilité d'architecture entre le pilote et l'application
Mon Java:
package javaapplication2;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
*
* @author Owner
*/
public class JavaApplication2 {
/**
* @param args the command line arguments
*
*/
public static void main(String[] args) {
// TODO code application logic here
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String sourceURL = new String("jdbc:odbc:myDatabase");
System.out.println(sourceURL);
Connection dbConnection = DriverManager.getConnection(sourceURL,"admin","");
Statement myStmt = dbConnection.createStatement();
String query = "INSERT INTO People(ID, Name, Surname, Age, Contact, Location, Course) VALUES"
+ " (1007, 'Elroy', 'Smith', '33', 21366688, 'Somewhere', 'somecourse')";
myStmt.executeUpdate(query);
ResultSet results = myStmt.executeQuery("SELECT * FROM People");
while(results.next())
{
System.out.print(results.getString(1));
System.out.print(results.getString(2));
System.out.print(results.getString(3));
System.out.println(results.getString(4));
}
results.close();
}
catch(ClassNotFoundException cnfe)
{
System.out.println(cnfe);
}
catch(SQLException sqle)
{
System.out.println(sqle);
}
}
}
Réponses:
Aucun de ceux-ci ne l'a fait pour moi. J'ai trouvé la réponse sur MSDN. Il y avait cependant des indices. L'architecture de l'erreur fait référence à 32 contre 64 bits. Ma solution était de savoir quelle application fonctionne sous (Access), 2010 étant 32b. J'ai trouvé cela en regardant dans l'onglet Processus du Gestionnaire des tâches où tous les processus 32b ont * 32 la fin de leurs noms. Comme cela a été dit, le panneau de contrôle lancera la version 64 bits d'ODBC à partir d'ici
c:\windows\system32\odbcad32.exe
et la version 32 bits est ici:
c:\windows\sysWOW64\odbcad32.exe
(plus simple à copier et coller dans la boîte de dialogue d'exécution)J'ai donc mis en place des DSN avec des noms se terminant par 32 et 64 dans chacun des panneaux de contrôle ODBC correspondants (AKA Administrator) qui indiquaient la même chose. Ensuite, j'ai choisi / choisi le bon en fonction du fait que l'application qui l'utilise est 32b ou 64b.
la source
c:\windows\sysWOW64\odbcad32.exe
et configurer la connexion à partir de là. Vous pourrez ensuite utiliser cette connexion ultérieurement dans un programme 32 bits pour accéder à la base de données.Vous obtenez exactement la même erreur lorsque vous essayez de vous connecter à une base de données MySQL à partir de MS-Access lorsque la version bit (32 vs 64) d'Access ne correspond pas
Pour ceux d'entre vous qui essaient de connecter MS-Access à MySQL sur un système Windows 64 bits, j'ai subi une torture pure en essayant de le faire fonctionner à la fois avec MS-Access 2010 et MS-Access 2013. Finalement, cela fonctionne, et voici les leçons que j'ai apprises en cours de route:
J'ai acheté un nouvel ordinateur portable Windows 7, 64 bits, et j'ai une application qui repose sur MS-Access en utilisant des tables MySQL.
J'ai installé la dernière version de MySQL, 5.6, en utilisant l'installation du package All In One. Cela vous permet d'installer à la fois la base de données et les pilotes ODBC. C'est bien, mais le pilote ODBC qu'il installe semble être le 64 bits, il ne fonctionnera donc pas avec MS-Access 32 bits. Cela semble aussi un peu bogué - pas sûr sur celui-là. Lorsque vous ajoutez un nouveau DSN dans le gestionnaire ODBC, ce pilote apparaît comme «Microsoft ODBC pour Oracle». Je n'ai pas pu faire fonctionner celui-ci. J'ai dû installer le 32 bits, décrit ci-dessous.
J'avais précédemment installé Office 2013, que je supposais être 64 bits. Mais en vérifiant la version (fichier, compte, à propos de l'accès), je vois qu'elle est 32 bits. Access 2010 et 2013 sont le plus souvent vendus sous forme de versions 32 bits.
Ma machine est une machine 64 bits. Ainsi, par défaut, lorsque vous configurez vos DSN pour MS-Access et que vous accédez de la manière habituelle au gestionnaire ODBC via le panneau de configuration, les options administratives, vous obtenez le gestionnaire ODBC 64 bits. Vous n'avez aucun moyen de le savoir! Vous ne pouvez pas le dire. C'est un énorme gotcha !! Il est impossible de configurer un DSN à partir de là et de le connecter avec succès à MS Access 32 bits. Vous obtiendrez l'erreur redoutée:
Vous devez télécharger et installer le pilote ODBC 32 bits à partir de MySQL. J'ai utilisé la version 3.5.1
http://dev.mysql.com/downloads/connector/odbc/3.51.html
Vous devez dire au gestionnaire ODBC dans le panneau de configuration de faire une randonnée et devez à la place invoquer explicitement le gestionnaire ODBC 32 bits avec cette commande exécutée à l'invite de commande Démarrer:
J'ai créé un raccourci vers cela sur mon bureau. À partir de là, créez votre DSN avec ce gestionnaire. Point important: CONSTRUISEZ-LES COMME DSNS SYSTÈME, PAS UTILISATEUR DSNS! Cela m'a fait trébucher pendant un moment.
À propos, la version 64 bits du gestionnaire ODBC peut également être exécutée explicitement en tant que:
Une fois que vous avez installé le pilote ODBC 32 bits à partir de MySql, lorsque vous cliquez sur Ajouter dans le gestionnaire ODBC, vous verrez 2 pilotes répertoriés. Choisissez "Pilote ANSI MySQL ODBC 5.2". Je n'ai pas essayé le pilote UNICODE.
Ça le fait. Une fois que vous avez défini vos DSN dans le gestionnaire ODBC 32 bits, vous pouvez vous connecter à MySQL de la manière habituelle depuis Access - Données externes, base de données ODBC, lien vers la base de données, sélectionnez Source de données machine et le DSN que vous avez créé sur votre MySQL base de données sera là.
la source
32 bit: c:\windows\system32\odbcad32.exe
64 bit: c:\windows\sysWOW64\odbcad32.exe
sysWOW64
est en fait le répertoire 32 bits. Windows adore être déroutant. Vous saurez quelle version vous utilisez car elle s'affichera (32 bits) ou (64 bits) dans la barre de titre de l'administrateur de sources de données ODBC.Il y a un décalage d'architecture. Votre pilote JDBC et votre JDK doivent être de la même architecture. Si vous utilisez un pilote 32 bits et que votre JDK est 64 bits, vous obtiendrez cette erreur.
Voir ça
Correction: dépend de votre architecture.
Vous aurez besoin de pilotes 64 bits si votre Java est 64 bits.
Téléchargement: http://www.microsoft.com/downloads/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en
la source
J'ai vu cette réponse et cela a fonctionné pour moi. https://msdn.microsoft.com/en-us/library/ms712362%28v=vs.85%29.aspx
Après avoir installé un pilote ODBC à partir du programme d'installation du pilote, vous pouvez définir une ou plusieurs sources de données pour celui-ci. Le nom de la source de données (DSN) doit fournir une description unique des données; par exemple, Paie ou Comptes fournisseurs. Les sources de données utilisateur et système définies pour tous les pilotes actuellement installés sont répertoriées dans les onglets DSN utilisateur ou DSN système de la boîte de dialogue Administrateur de sources de données ODBC. Les sources de données de fichier dans un répertoire donné sont répertoriées dans l'onglet Fichier DSN; le répertoire à afficher est entré dans la zone Rechercher dans de l'onglet Fichier DSN. System_CAPS_noteNote
Pour gérer une source de données qui se connecte à un pilote 32 bits sous une plate-forme 64 bits, utilisez c: \ windows \ sysWOW64 \ odbcad32.exe. Pour gérer une source de données qui se connecte à un pilote 64 bits, utilisez c: \ windows \ system32 \ odbcad32.exe. Dans les outils d'administration d'un système d'exploitation Windows 8 64 bits, il existe des icônes pour la boîte de dialogue Administrateur de source de données ODBC 32 bits et 64 bits.
Si vous utilisez l'odbcad32.exe 64 bits pour configurer ou supprimer un DSN qui se connecte à un pilote 32 bits, par exemple, Driver do Microsoft Access (* .mdb), vous recevrez le message d'erreur suivant:
Le DSN spécifié contient une incompatibilité d'architecture entre le pilote et l'application
Pour résoudre cette erreur, utilisez le odbcad32.exe 32 bits pour configurer ou supprimer le DSN.
Une source de données associe un pilote ODBC particulier aux données auxquelles vous souhaitez accéder via ce pilote. Par exemple, vous pouvez créer une source de données pour utiliser le pilote ODBC dBASE pour accéder à un ou plusieurs fichiers dBASE trouvés dans un répertoire spécifique sur votre disque dur ou un lecteur réseau. À l'aide de l'administrateur de sources de données ODBC, vous pouvez ajouter, modifier et supprimer des sources de données, comme décrit dans le tableau suivant.
la source
Par défaut, l'invite de commandes est connectée à System32. Exécutez une invite de commande 64 bits, c'est-à-dire
C:\WINDOWS\SYSWOW64\CMD.EXE
. En cela, compilez et exécutez votre application java.la source
Pour résoudre ce problème, assurez-vous d'abord que votre logiciel java doit être une version 32 bits s'il s'agit d'une version 64 bits, il affichera clairement l'erreur de non-concordance alors essayez de réinstaller 32 bits de la version java et exécutez le programme java dans la commande de c: \ windows \ sysWOW64 \ odbcad32.exe (le plus simple à copier et coller dans la boîte de dialogue d'exécution) c'est assez que votre programme fonctionne définitivement
la source
Le problème auquel vous êtes confronté peut être dû au fait que: vous aviez Office 32 bits et une invite de commande 64 bits. Pour résoudre le problème, vous devez suivre 2 étapes:
Ouvrez le gestionnaire ODBC pour DSN en utilisant: C: \ Windows \ SysWOW64 \ odbcad32.exe Cela ouvrira l'Administrateur de données ODBC pour la version 32 bits et vous verrez tous les pilotes de base de données.
Après cela, vous devez ouvrir l'invite de commande 32 bits en utilisant: C: \ Windows \ SysWOW64 \ cmd.exe Cela ouvrira la version 32 bits de l'invite de commande. Dans ce nouveau CMD, veuillez recompiler votre programme Java et exécuter votre programme.
J'espère que cela aidera.
la source
Un peu tard, mais comme j'ai rencontré le même problème, dans votre scénario exact, j'ai pensé que j'ajouterais ma solution.
J'ai Windows 7 (64 bits) et Office 2010 (32 bits). J'ai essayé avec la chaîne de connexion sans DSN:
jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=I:/TeamForge/ORS/CTFORS.accdb
et j'ai essayé avec la connexion DSN, en utilisant à la fois les versions System32 et SysWOW64 de l'administrateur ODBC, et rien de tout cela n'a fonctionné.
Ce qui a finalement fonctionné, c'était de faire correspondre la version bit de Java avec la version bit d'Office. Une fois que j'ai fait cela, je pourrais utiliser le mode de connexion DSN ou DSN moins, sans aucun problème.
la source
Avez-vous d'abord créé le DSN dans Panneau de configuration> Outils d'administration> ODBC> DSN système. Nommez-le comme "myDatabase" et si je demande de localiser le fichier de base de données / d'accès, spécifiez le chemin en utilisant l'option de navigation. Une fois que votre DSN sera créé avec succès, vous pourrez facilement accéder à votre base de données.
la source
Si vous utilisez netbeans, allez dans tools-> java Platform, changez jdk_home qui pointe vers c: / programfiles / java / jdk1_7 en c: programFiles (x86) / java / jdk1_6_21
s'il n'est pas modifiable, recherchez netbeans.cnf et effectuez les modifications comme indiqué ci-dessus pour jdk_home. redémarrer neatbeans et comment cela fonctionne J'ai eu le même problème, mais j'ai travaillé.
la source
J'ai eu beaucoup de mal à me connecter à MySQL depuis un ordinateur portable 64 bits, exécutant Windows 7, utilisant MS Access 2010. J'ai trouvé l'article précédent très utile, mais je n'arrivais toujours pas à me connecter en utilisant odbc 3.5.1. Comme j'avais précédemment lié une machine 32 bits à l'aide de Connector / ODBC 5.1.13, j'ai téléchargé cette version et l'ai configurée en utilisant les instructions ci-dessus. Succès. La réponse semble être d'essayer différentes versions de Connector.odbc.
la source
Si vous vous connectez à partir d'une plate-forme 64 bits à l'aide d'un pilote 32 bits, exécutez l'exécutable C: \ Windows \ SysWOW64 \ odbcad32.exe et créez le DSN. Ça va marcher.
la source
J'ai rencontré ce problème lors de la mise à niveau vers un serveur Windows 7 avec certaines applications CLASP héritées. Essayer d'exécuter une application 32 bits sur une machine 64 bits.
Essayez de définir la compatibilité 32 bits des pools d'applications sur True et / ou créez des DSN en 32 et 64 bits.
Ouvrez la fenêtre de source de données odbc dans les deux versions à partir de la zone d'exécution. C: \ Windows \ SysWOW64 \ odbcad32.exe C: \ Windows \ system32 \ odbcad32.exe
la source
J'ai rencontré ce problème. Cela est dû à l'architecture de votre ordinateur et à l'architecture de base de données que vous utilisez.
Si vous utilisez un système d'exploitation 32 bits, tout fonctionne bien car vous ne pouvez installer que des logiciels 32 bits. Le problème survient lorsque vous utilisez le système d'exploitation 64 bits.
Afin de résoudre ce problème, c'est simple - j'ai mis beaucoup de temps à découvrir ce problème.
Vous ne pouvez pas accéder à votre base de données car votre JVM 64 bits n'est pas la même que la JVM 32 bits.
Pour ajouter votre base de données dans votre système 1. Panneau de configuration 2. Outils d'administration 3. Source de données (ODBC), cliquez dessus avec le bouton droit de la souris, changez la cible en \ sysWOW64 \ odbcad32.exe changez le début en r% \ SysWOW64
Ensuite, vous devriez pouvoir courir. Informez-moi si vous avez un problème avec cela.
Merci!
la source
J'ai corrigé l'erreur.
Suis les étapes:
Configurer le panneau de configuration: a. Panneau de contrôle b. Outils d'administration c. Source de données (ODBC)
clic droit dessus changer la cible pour
\sysWOW64\odbcad32.exe
changer le début enr%\SysWOW64
Exécutez-le et meilleure chance. Fonctionne sous Windows 7 ainsi que 8
Supprimez la version la plus récente de MS-Office et installez uniquement MS-Office 2007 si le problème persiste
la source
Pour résoudre ce problème, assurez-vous d'abord que votre logiciel java doit être une version 32 bits s'il s'agit d'une version 64 bits, il affichera clairement l'erreur de non-concordance alors essayez de réinstaller la version 32 bits de java et exécutez le programme java dans la commande de
c:\windows\sysWOW64\odbcad32.exe
(le plus simple à copier et coller dans la boîte de dialogue d'exécution) c'est assez que votre programme fonctionne définitivementla source
je pense que ce sera aussi plus utile.
pour l'architecture miss match,
je viens de copier le fichier jdk du fichier 32 bits C: \ Program Files (x86) \ Java \ jdk1.7.0_71 et le coller dans le fichier 64 bits C: \ Program Files \ Java \ jdk1.7.0_10, puis renommez le fichier pour qu'il corresponde au fichier que vous remplacez pour éviter l'erreur IDE (netbeans)
alors vous êtes prêt à partir.
Remarque: vous devez sauvegarder vos fichiers 64 bits afin de pouvoir la renvoyer à son emplacement lorsque vous souhaitez créer une application 64 bits.
la source
Allez sur ce lien et téléchargez le pilote ODBC pour OS 64 bits.
http://www.microsoft.com/en-us/download/details.aspx?id=13255
la source