web-dev-qa-db-fra.com

Connexion à la base de données Java Access

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?

5
user2167382

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

  1. Essayez de spécifier le chemin complet du fichier .mdb comme je l’ai fait.

  2. 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)}.

3
Gord Thompson

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

1
Gord Thompson