J'essaie de faire un projet avec une connexion à la base de données (MS Access 2010) J'utilise ce tutoriel sur CodeProject .
import Java.sql.*;
public class DbAccess
{
public static void main(String[] args)
{
try
{
Class.forName("Sun.jdbc.odbc.JdbcOdbcDriver");
String database =
"jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=myDB.mdb;";
Connection conn = DriverManager.getConnection(database, "", "");
Statement s = conn.createStatement();
// create a table
String tableName = "myTable" + String.valueOf((int)(Math.random() * 1000.0));
String createTable = "CREATE TABLE " + tableName +
" (id Integer, name Text(32))";
s.execute(createTable);
// enter value into table
for(int i=0; i<25; i++)
{
String addRow = "INSERT INTO " + tableName + " VALUES ( " +
String.valueOf((int) (Math.random() * 32767)) + ", 'Text Value " +
String.valueOf(Math.random()) + "')";
s.execute(addRow);
}
// Fetch table
String selTable = "SELECT * FROM " + tableName;
s.execute(selTable);
ResultSet rs = s.getResultSet();
while((rs!=null) && (rs.next()))
{
System.out.println(rs.getString(1) + " : " + rs.getString(2));
}
// drop the table
String dropTable = "DROP TABLE " + tableName;
s.execute(dropTable);
// close and cleanup
s.close();
conn.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
Mais je reçois une exception étrange: Java.sql.SQLException: [Microsoft] [????????? ????????? ODBC] ???????? ?????? ?? ?????? ? ?? ?????? ???????, ???????????? ?? ?????????
Java.sql.SQLException: [Microsoft] [????????? ????????? ODBC] ???????? ?????? ?? ?????? ? ?? ?????? ???????, ???????????? ?? ????????? à Sun.jdbc.odbc.JdbcOdbc.createSQLException (JdbcOdbc.Java:6956) à Sun.jdbc.odbc.JdbcOdbc.standardError (JdbcOdbc.Java:7113) à [. Sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect (JdbcOdbc.Java:3072) à Sun.jdbc.odbc.JdbcOdbcConnection.initialize (JdbcOdbcConnection.Java:323) à .djd. JdbcOdbcDriver.connect (JdbcOdbcDriver.Java:174) à l'adresse Java.sql.DriverManager.getConnection (DriverManager.Java:579) à Java.sql.DriverManager.getConnection (DriverManager.Java:579) à . à dbaccess.DbAccess.main (DbAccess.Java:28)
Je le google et trouver d'autres questions sur Stack comme ceci: Stack Post
J'ajoute donc tous les ODBC pilotes pouvant m'aider à connecter le fichier * .mdb. Mais rien de bon hepend. (
Qu'est-ce que c'est et comment se connecter à Access DB?
Votre code n’est fondamentalement pas faux, car je l’ai collé dans Eclipse et tout s’est bien passé. La seule modification apportée était de spécifier le chemin d'accès au fichier de base de données, c'est-à-dire au lieu d'utiliser
DBQ=myDB.mdb
J'ai utilisé
DBQ=C:\\__tmp\\myDB.mdb
Je l'exécutais également sous une JVM 32 bits (sur un ordinateur 32 bits). Donc, mes suggestions seraient
Essayez de spécifier le chemin complet du fichier .mdb
comme je l’ai fait.
Si vous rencontrez toujours une erreur, vérifiez dans votre environnement Java si votre application s'exécute sur une JVM 64 bits. Si tel est le cas, Driver={Microsoft Access Driver (*.mdb)}
ne fonctionnera pas: il n’existe pas de version 64 bits de l’ancien pilote Jet ODBC. Dans ce cas, vous avez deux options:
je. Configurez votre application pour qu'elle s'exécute dans une JVM 32 bits, ou
ii. Téléchargez et installez la version 64 bits du moteur de base de données Access à partir de here , puis utilisez Driver={Microsoft Access Driver (*.mdb, *.accdb)}
.
Maintenant que le pont JDBC-ODBC a été supprimé de Java 8, il serait préférable d’utiliser le pilote UCanAccess JDBC. Pour plus d'informations, voir
Manipulation d'une base de données Access à partir de Java sans ODBC