9
votes

Connexion d'une base de données Microsoft Access à Java à l'aide de JDBC et de compilation

Pour un projet de base de données d'école, nous effectuons un programme de base de données (interface graphique de l'utilisateur et la base de données). Utilisation de Microsoft Access 2010 J'ai créé la base de données et j'ai renseigné la base de données avec quelques données d'échantillonnage et l'a enregistré au format .mdb et l'a placé dans mon dossier de projet.

Lorsque vous l'exécutez dans Eclipse, le code suivant fonctionne bien, vous connecte et même récupère le mettre en doute. Cependant, je trouve que je ne suis pas en mesure d'exporter le code sur un pot et de l'exécuter (qui est requis pour le projet, donnez-leur une copie de travail de votre programme sur un CD ou un lecteur flash) et je ne parviens pas à porter le port de la CODE AUX NETBEANS Pour qu'il fonctionne, ainsi que d'essayer de compiler sur une machine Linux. P>

Je suppose qu'il s'agit d'un problème avec les conducteurs inclus ou d'essayer d'utiliser Microsoft Access. L'erreur que je reçois lors de l'exécution du bocal ou de l'exécution sur Netbeans est donnée ci-dessous le code. Donc, je demande soit comment puis-je inclure les conducteurs pour rendre le programme portable, ou comment puis-je m'approcher ce problème? P>

Merci d'avance p>

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
        at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3073)
        at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
        at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:207)
        at tldatabase.DataConnect.makeConnection(DataConnect.java:35)
        at tldatabase.Main.main(Main.java:24)


0 commentaires

5 Réponses :


0
votes

Je pense que votre application ne voit pas tldatabasedbm.mdb dans le répertoire actuel. Vous pouvez donner un chemin complet sur ce fichier dans la chaîne de connexion ou ajouter System DSN dans ODBC Manager, puis la connecter à celui-ci avec la chaîne de connexion comme: JDBC: ODBC: TLDATABASEDBM


3 commentaires

Test de puits Avec la version de travail Eclipse du code, si le chemin d'accès au fichier est incorrect, je reçois une erreur de fichier inconnu, pas un "nom de la source de données introuvable et aucun pilote par défaut spécifié". Je ne sais pas si je peux utiliser un DSN et que je dispose du bocal travail parce que je dois emballer tout le programme de base de données et le donner à l'enseignant à courir. J'ai tenté d'utiliser la route DSN avant, mais j'ai eu du mal à le faire fonctionner, je vais réessayer et demander si je peux me lire pour courir le programme lorsque je le donne au Ta pour la démonstration. Merci pour l'aide en tout cas.


Très bien, cela fonctionne avec un fichier DSN en tant que fichier JAR. Ma seule question est que cela fonctionne maintenant si elles fonctionnent si elles exécutent le programme sur un ordinateur non Windows, car seuls Windows dispose des pilotes pour se connecter aux fichiers d'accès MS, non? et je suppose qu'il n'y a pas d'autre moyen de se connecter à un fichier MS Access .mdb à l'aide de Java? Merci!


Je l'ai testé en utilisant Jython avec la base de données Northwind Access. Il a fonctionné avec la chaîne de connexion contenant le nom de fichier complet .mdb et avec DSN. Je ne sais pas si dans Java, vous devez ajouter newInstance () après class.forname () . En Java6, vous n'avez même pas besoin d'appeler class.forname () . Jetez un coup d'œil à Onjava.com/pub/a/onjava/2006/08/02/... .



10
votes

Je sais que le message était il y a des années, mais j'ai eu envie de répondre à la question pour ceux qui viennent de ressentir cela en ce moment. Il m'a fallu un certain temps pour connaître la réponse à la question alors voici la solution:

http://wiki.netbeans.org/faqsettingheapsize

Suivez le "Exécution du JVM 32 bits".

Tout ce que vous avez à faire est de trouver les NetBeans.conf dans le dossier d'installation de vos NetBeans et modifier le répertoire de quelque chose comme ceci:

NetBeans_jdkhome = "C: \ Program Files \ Java \ jdk1.6.0_24"

à ceci:

NetBeans_JDKHOME = "C: \ Program Files (x86) \ java \ jdk1.6.0_21"

Le problème est que NetBeans peut fonctionner en 64 bits mais MS Access prend uniquement en charge 32 bits. Ce faisant cela, j'espère résoudre le problème. Assurez-vous également d'installer ceci:

http://www.microsoft.com/download/fr/details.asaspx ? displaylang = EN & ID = 23734


0 commentaires

0
votes

Honnêtement, je n'aime pas ce que je vais dire ... mais cela a résolu le même problème pour moi ... mystérieusement ...: ((((

sur la ligne où vous définissez la variable de base de données, j'ai changé ... ( .mdb) ... ( .mdb, * .acdb) ...

Tout le meilleur pour déterminer la différence qui a fait!


1 commentaires

C'est le nom réel de votre pilote dans des sources de données afin que vous ayez résolu.



1
votes

Le problème principal réside dans la ligne:

String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=TLDATABASEDBM.mdb";


0 commentaires

0
votes
package javaapplication1;

import java.sql.*;

public class MSaccess_archive {
public static void main(String[] args) {

    try {

       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// set this to a MS Access DB you have on your machine
String filename = "mdbTEST.mdb";
String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
database+= filename.trim() + ";DriverID=22;}"; // add on to the end 
// now we can get the connection from the DriverManager
Connection con = DriverManager.getConnection( database ,"","");

        Statement stmt = con.createStatement();

        stmt.execute("select * from student"); // execute query in table student

        ResultSet rs = stmt.getResultSet(); // get any Result that came from our query

        if (rs != null)
         while ( rs.next() ){

            System.out.println("Name: " + rs.getInt("Age") + " ID:       "+rs.getString("Course"));
            }

            stmt.close();
            con.close();
        }
        catch (Exception err) {
            System.out.println("ERROR: " + err);
        }
   }

}

0 commentaires