La connexion d'une Base de données Microsoft Access à Java à l'aide de JDBC et de la compilation
pour une école de la base de données du projet, nous réalisons un programme de base de données (user interface graphique et la base de données). À l'aide de Microsoft Access 2010, j'ai créé la base de données et remplie avec des exemples de données, et l'a sauvé .format mdb et l'a placé dans mon dossier de projet.
Lors de l'exécution dans eclipse, le code suivant fonctionne très bien, se connecte et même récupère la requête. Cependant, je trouve que je suis incapable d'exporter le code pour un pot et de l'exécuter (ce qui est requis pour le projet, de leur donner une copie de travail de votre programme sur un CD ou un lecteur flash), et je suis également incapable de port la code sur Netbeans pour qu'il fonctionne, ainsi que d'essayer de compiler sur une machine Linux.
Je suppose que c'est un problème avec y compris les pilotes, ou essayez d'utiliser Microsoft access. L'erreur que j'obtiens lorsque l'exécution du pot ou en cours d'exécution sur Netbeans est donnée ci-dessous le code. J'ai donc demander comment puis-je inclure des pilotes pour rendre le programme portable, ou sinon, comment puis-je aborder ce problème?
Merci d'avance
import java.sql.*;
public class JDBCTest {
static Connection connection;
static Statement statement;
public static void main(String args[]){
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=TLDATABASEDBM.mdb";
connection = DriverManager.getConnection( database ,"","");
buildStatement();
executeQuery();
}catch(Exception e){
e.printStackTrace();
System.out.println("Error!");
}
}
public static void buildStatement() throws SQLException {
statement = connection.createStatement();
}
public static void executeQuery() throws SQLException {
boolean foundResults = statement.execute("SELECT * FROM tblStaff AS x WHERE City='Calgary'");
if(foundResults){
ResultSet set = statement.getResultSet();
if(set!=null) displayResults(set);
}else {
connection.close();
}
}
public static void displayResults(ResultSet rs) throws SQLException {
ResultSetMetaData metaData = rs.getMetaData();
int columns=metaData.getColumnCount();
String text="";
while(rs.next()){
for(int i=1;i<=columns;++i) {
text+=""+metaData.getColumnName(i)+":\t";
text+=rs.getString(i);
//text+="</"+metaData.getColumnName(i)+">";
text+="\n";
}
text+="\n";
}
System.out.println(text);
}
}
L'erreur mentionnée ci-dessus:
java.sql.SQLException: [Microsoft][Gestionnaire de pilotes ODBC] source de Données non trouvée et nom de pilote non spécifié au coucher du soleil.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957) au coucher du soleil.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114) au coucher du soleil.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3073) au coucher du soleil.jdbc.odbc.JdbcOdbcConnection.initialiser(JdbcOdbcConnection.java:323) au coucher du soleil.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174) à java.sql.DriverManager.getConnection(DriverManager.java:582) à java.sql.DriverManager.getConnection(DriverManager.java:207) au tldatabase.DataConnect.makeConnection(DataConnect.java:35) au tldatabase.Principal.principale(Main.java:24)
OriginalL'auteur Moogle | 2010-12-01
Vous devez vous connecter pour publier un commentaire.
Je sais que le post a été il y a des années mais j'ai envie de répondre à la question pour ceux qui sont juste l'expérience de ce droit maintenant. Il m'a fallu un certain temps pour connaître la réponse à la question alors, voici la solution:
http://wiki.netbeans.org/FaqSettingHeapSize
Suivre les "cours d'Exécution de la JVM 32 bits".
Tout ce que vous avez à faire est de trouver le netbeans.conf dans le dossier d'installation de votre netbeans et modifier le répertoire de quelque chose comme ceci:
netbeans_jdkhome="C:\Program Files\Java\jdk1.6.0_24"
:
netbeans_jdkhome="C:\Program Files (x86)\Java\jdk1.6.0_21"
Le problème est netbeans peut-être tourner en 64 bits mais MS Access uniquement en charge 32 bits. Ce faisant, cela devrait résoudre le problème. Aussi, veillez à installer ce:
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=23734
OriginalL'auteur Mark Darwin Nacionales
Le principal problème réside dans la ligne:
Aussi, si vous souhaitez utiliser le même DSN à chaque fois, il est préférable d'ajouter la DSN(Data Source Name) dans le système sur lequel la base de données est stockée.
OriginalL'auteur Anil_irocks88
Je pense que votre application ne vois pas
TLDATABASEDBM.mdb
dans le répertoire courant. Vous pouvez donner le chemin complet vers ce fichier dans la chaîne de connexion ou d'ajouter un système DSN ODBC Manager et de vous y connecter avec la chaîne de connexion comme:jdbc:odbc:TLDATABASEDBM
Bien, de sorte qu'il fonctionne avec une source de données comme un fichier jar. Ma question, maintenant, est-ce l'habitude de travailler s'ils exécuter le programme sur un autre ordinateur windows, comme windows contient les pilotes pour se connecter à ms access fichiers, non? et je suppose que il n'y a pas d'autre moyen de se connecter à un ms access .mdb fichier à l'aide de java? Merci!
Je l'ai testé à l'aide de Jython avec les Comptoirs de base de données Access. Il a travaillé avec la chaîne de connexion qui contient plein .nom du fichier mdb et avec DSN. Je ne sais pas si en Java, vous devez ajouter
newInstance()
aprèsClass.forName()
. Dans Java6-vous même pas besoin d'appelerClass.forName()
. Jetez un oeil à onjava.com/pub/a/onjava/2006/08/02/....OriginalL'auteur Michał Niklas
Honnêtement, je n'aime pas ce que je vais dire... mais, il 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)... dans ...(.mdb, *.accdb)...
Tout le meilleur pour essayer de comprendre quelle est la différence qui fait!
OriginalL'auteur Vasu
OriginalL'auteur Joseph Dominguez