Datenbankverbindung Access

mimix

Aktives Mitglied
Hallo

Ich möchte ein Verbindung zu meiner Access Datenbank herstellen

Java:
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Arrays;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;


public class JTableExample extends JFrame {

   private static final String dbDriverClass = "sun.jdbc.odbc.JdbcOdbcDriver";

   static {
      try {

         Thread.currentThread().getContextClassLoader().loadClass(dbDriverClass).newInstance();
      } catch (InstantiationException e1) {
         // TODO Auto-generated catch block
         e1.printStackTrace();
      } catch (IllegalAccessException e1) {
         // TODO Auto-generated catch block
         e1.printStackTrace();

      } catch (ClassNotFoundException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
   }

   private final JButton btnConnect, btnRefresh;

   private final JTextField txtSQL;

   private final JTable table;

   private final JScrollPane scrollPane;

   private final DefaultTableModel dtm;

   private final javax.swing.JPanel btnPanel, contentPanel;

   private final String dbPath = "C:/Users/test/Desktop/datenbank.mdb";

   private final String dbUser = "Administrator";

   private final String dbpasswd = "";

   // Leerzeichen zwischen : und D entfernen...
   private final String dbURL = "jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" + dbPath;

   private Connection con;

   private ResultSet rs;

   public JTableExample() {
      super("JTableExample");

      GridBagConstraints gridBagConstraints;

      contentPanel = new JPanel();
      btnPanel = new JPanel();
      btnConnect = new JButton();
      btnRefresh = new JButton();
      txtSQL = new JTextField();
      scrollPane = new JScrollPane();
      table = new JTable();
      dtm = new DefaultTableModel();

      getContentPane().setLayout(new FlowLayout());

      setTitle("JTableExample");
      addWindowListener(new WindowAdapter() {
         @Override
         public void windowClosing(WindowEvent evt) {
            try {
               if (con != null && !con.isClosed()) {
                  con.close();
               }
            } catch (SQLException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            }
            setVisible(false);
            dispose();
            System.exit(0);
         }
      });

      contentPanel.setLayout(new GridBagLayout());

      contentPanel.setBackground(new Color(102, 153, 255));
      contentPanel.setMinimumSize(new Dimension(400, 300));
      contentPanel.setPreferredSize(new Dimension(400, 300));
      btnPanel.setBackground(new Color(255, 153, 51));
      btnPanel.setMinimumSize(new Dimension(400, 100));
      btnPanel.setPreferredSize(new Dimension(400, 100));
      btnConnect.setText("Connect");
      btnPanel.add(btnConnect);

      btnRefresh.setText("Refresh");
      btnPanel.add(btnRefresh);

      txtSQL.setColumns(25);
      btnPanel.add(txtSQL);

      gridBagConstraints = new GridBagConstraints();
      gridBagConstraints.gridx = 0;
      gridBagConstraints.gridy = 1;
      contentPanel.add(btnPanel, gridBagConstraints);

      scrollPane.setMinimumSize(new Dimension(400, 200));
      scrollPane.setPreferredSize(new Dimension(400, 200));
      table.setModel(dtm);
      table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
      scrollPane.setViewportView(table);

      contentPanel.add(scrollPane, new GridBagConstraints());

      getContentPane().add(contentPanel);

      setSize(400, 300);

      Container container = getContentPane();
      btnConnect.addActionListener(new ActionListener() {

         public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
            connect();
         }

      });
      btnRefresh.addActionListener(new ActionListener() {

         public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
            refresh();
         }

      });

      setVisible(true);
   }

   /**
     * 
     */
   protected void refresh() {
      // TODO Auto-generated method stub
      try {
         if (con == null || con.isClosed()) {
            JOptionPane.showMessageDialog(this, "Keine Datenbaknverbindung!", "Fehler", JOptionPane.ERROR_MESSAGE);
            return;
         }
      } catch (SQLException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }

      Statement stmt = null;
      try {
         stmt = con.createStatement();
      } catch (SQLException e1) {
         // TODO Auto-generated catch block
         e1.printStackTrace();
      }

      if (stmt == null) {
         throw new RuntimeException("stmt is null");
      }

      String sql = txtSQL.getText();
      if (sql == null) {
         JOptionPane.showMessageDialog(this, "Keine SQL Abfrage angegeben!", "Fehler", JOptionPane.ERROR_MESSAGE);
         return;
      }
      try {
         rs = stmt.executeQuery(sql);

      } catch (SQLException e2) {
         // TODO Auto-generated catch block
         e2.printStackTrace();
      }

      putRSinTableModel(rs, dtm);

      table.setModel(dtm);

      table.updateUI();

   }

   /**
    * @param rs
    * @param dtm
    */
   private void putRSinTableModel(ResultSet rs, DefaultTableModel dtm) {
      // TODO Auto-generated method stub
      ResultSetMetaData rsmd = null;
      int clmCnt = -1;
      try {
         rsmd = rs.getMetaData();
         clmCnt = rsmd.getColumnCount();

      } catch (SQLException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }

      if (rsmd == null || clmCnt == -1) {
         throw new RuntimeException("rsmd is null");
      }
      try {

         Object[] clmHeaders = new Object[clmCnt];
         for (int i = 1; i <= clmCnt; i++) {
            clmHeaders[i - 1] = rsmd.getColumnName(i);
         }

         Vector rows = new Vector();
         Vector rowData = null;

         int row = 0;
         while (rs.next()) {
            rowData = new Vector();
            for (int i = 1; i <= clmCnt; i++) {
               String fieldVal = rs.getString(i);
               System.out.print(fieldVal + " ");
               rowData.add(fieldVal);
            }
            rows.add(rowData);
            System.out.println();
         }
         dtm.setDataVector(rows, new Vector(Arrays.asList(clmHeaders)));
      } catch (SQLException e1) {
         // TODO Auto-generated catch block
         e1.printStackTrace();
      }
   }

   /**
     * 
     */
   protected void connect() {
      // TODO Auto-generated method stub
      if (con != null)
         return;
      System.out.println(dbURL);
      try {
         con = DriverManager.getConnection(dbURL, dbUser, dbpasswd);
      } catch (SQLException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
   }

   public static void main(String[] args) {
      new JTableExample();
   }
}


Sobald ich eine Verbindung aufbauen möchte, erscheint die Folgende Fehlermeldung:

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Datenbank '(unbekannt)' konnte nicht geöffnet werden. Entweder wird die Datenbank nicht von Ihrer Anwendung erkannt, oder die Datei ist beschädigt.

Die Datenbank ist aber vorhanden :bahnhof:
 
Zuletzt bearbeitet von einem Moderator:

Camill

Bekanntes Mitglied
Wenn ich nichts übersehen habe fehlt etwas Grundlegendes - das Laden des Treibers.
Hier findest du ein Beispiel.

€: Na da habe ich wohl wircklich etwas übersehen, brauchst diesen beitrag somit nicht beachten.
 
Zuletzt bearbeitet:
S

SlaterB

Gast
funktioniert das hier?
http://www.java-forum.org/datenbank...dbcodbc-bruecke-einbinden-datenbank-java.html

wie ist die Datenbank angelegt, gibt es dafür verläßliche Vorhehensweisen?
die Fehlermeldung kann man halbwegs gut suchen, führt auch zu paar Themen hier im Forum,
mehr als evtl. falschen Pfad oder eben schlecht angelegte DB habe ich noch nicht als Ursache gesehen

@Camill
> Thread.currentThread().getContextClassLoader().loadClass(dbDriverClass).newInstance();
am Anfang?

aber ja, über die 300 Zeilen wollte ich auch meckern, eine einfache main mit 10 Zeilen ginge genauso
 
Zuletzt bearbeitet von einem Moderator:

epitox

Mitglied
Java:
                       Vector columnNames = new Vector();
                                Vector data = new Vector();
                                try{       
                                    //Abfrage definieren
                                    query = "SELECT * FROM bmaterial WHERE Artikel LIKE '%"+artikel+"%' AND Abteilung LIKE '%"+abt+"%' AND Einheit LIKE '%"+einheit+"%'";
                                    //Datenbankverbindung herstellen
                                    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                                    Connection con=DriverManager.getConnection( "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/EDV/Allgemein/Toner-Ausgabe-Tool/toner.mdb","","" );

                                    //Ein SQL-Statement wird erzeugt
                                    Statement stmt = con.createStatement();
                                    ResultSet rst = stmt.executeQuery(query);
                                    ResultSetMetaData md = rst.getMetaData();
                                    int columns = md.getColumnCount();
                                    //  Spaltennamen ermitteln
                                    for (int i = 1; i <= columns; i++) {
                                        String colname=md.getColumnName(i);
                                        columnNames.addElement( colname );
                                    }
                                    //  Zeileninhalt ermitteln
                                    while (rst.next()) {
                                        Vector row = new Vector(columns);
                                        for (int i = 1; i <= columns; i++) {
                                            artikelanzahl++;
                                            row.addElement( rst.getObject(i) );
                                        }
                                        data.addElement( row );
                                    }
                                    rst.close();
                                    stmt.close();
                                    con.close();
                                } catch(Exception e) {
                                    System.out.println("Exception: " + e);
                                }

Liest bei mir Daten aus einer Access-DB aus und erzeugt daraus eine Tabelle, aber den Verbindungsaufbau solltest du übernehmen können ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Datenbankverbindung zu MS Access Datenbankprogrammierung 4
T Datenbankverbindung access funtioniert nicht Datenbankprogrammierung 21
Zrebna Wie mittels PL/SQL eine Datenbankverbindung blockieren? Datenbankprogrammierung 6
B Probleme mit Datenbankverbindung Datenbankprogrammierung 2
J Jar-Datei stellt keine Datenbankverbindung her Datenbankprogrammierung 3
B SQLite Frage zu SQLite Datenbankverbindung Datenbankprogrammierung 7
Danloc Informationen für Datenbankverbindung wo/wie speichern? Datenbankprogrammierung 11
T Problem mit Datenbankverbindung Datenbankprogrammierung 22
I Datenbankverbindung Oracle DB klappt nicht - getConnection returned null Datenbankprogrammierung 8
M Datenbankverbindung mit JSP herstellen Datenbankprogrammierung 19
D Keine Datenbankverbindung Datenbankprogrammierung 4
dat_vin JavaFX Datenbankverbindung über JPA und MySQL Error Datenbankprogrammierung 0
B Datenbankverbindung herstellen Datenbankprogrammierung 6
R Datenbankverbindung kann nicht hergestellt werden Datenbankprogrammierung 8
I SELECT bei Datenbankverbindung Datenbankprogrammierung 6
E Zuverlässige Datenbankverbindung Datenbankprogrammierung 4
B SQLite Java Login + Datenbankverbindung Datenbankprogrammierung 4
eskimo328 Datenbankverbindung ohne Passwort im Quelltext bei einer offline Anwendung Datenbankprogrammierung 14
Kenan89 Keine Datenbankverbindung möglich Datenbankprogrammierung 52
K Problem mit Datenbankverbindung via Eclipse Datenbankprogrammierung 2
M Datenbankverbindung zu langsam beim Insert? Datenbankprogrammierung 6
E Datenbankverbindung mit Oracle JDBC und Eclipse Plugin Quantum db Datenbankprogrammierung 2
N Allg. Frage zur Datenbankverbindung Datenbankprogrammierung 2
C [MSSQL] Datenbankverbindung will nicht klappen... Datenbankprogrammierung 2
Hartigan Datenbankverbindung automatisch aktualisieren Datenbankprogrammierung 3
C MySQL Keine Datenbankverbindung Datenbankprogrammierung 6
D MySQL Datenbankverbindung scheitert Datenbankprogrammierung 9
A Datenbankverbindung mit einer Datenbank auf einem Webspace Datenbankprogrammierung 10
G Wie sieht eine Datenbankverbindung mit jndi aus? Datenbankprogrammierung 3
D Sicherheit für Datenbankverbindung Datenbankprogrammierung 19
MQue MySQL DatenbankVerbindung Datenbankprogrammierung 3
B Datenbankverbindung kann nicht aufgebaut werden. Datenbankprogrammierung 2
M Aus einem Applet eine Datenbankverbindung starten? Datenbankprogrammierung 26
G Datenbankverbindung mit Proxool aufrecht erhalten Datenbankprogrammierung 4
G iBatis Datenbankverbindung - DB-User übergeben Datenbankprogrammierung 4
J Warum ist es aufwendig eine Datenbankverbindung herzustellen Datenbankprogrammierung 3
E Datenbankverbindung verwalten Datenbankprogrammierung 6
J Fehler bei Oracle-Datenbankverbindung Datenbankprogrammierung 2
E Datenbankverbindung Java MySQL Exception Datenbankprogrammierung 10
K Datenbankverbindung zu MySQL in XAMPP Datenbankprogrammierung 11
M Dauerhafte Datenbankverbindung - Timeouts? Datenbankprogrammierung 4
timomeinen [Hibernate] Datenbankverbindung testen Datenbankprogrammierung 11
M Datenbankverbindung bricht nach ca. 12 Stunden Verbindung ab Datenbankprogrammierung 3
K Wann schließt ihr die Datenbankverbindung? Datenbankprogrammierung 7
E Datenbankverbindung von BIRT Datenbankprogrammierung 3
S Datenbankverbindung auslagen Datenbankprogrammierung 3
8 MySQL Datenbankverbindung herstellen FAQ Datenbankprogrammierung 2
A Was passiert wenn eine Datenbankverbindung unterbricht Datenbankprogrammierung 7
Tom#234 Jakarta Web Service SQL Access Error Datenbankprogrammierung 7
G Connect zu ACCESS-DB mit Ucanaccess Datenbankprogrammierung 11
P Verbindung zu einer Access Datenbank per Eclipse oder Intellij Datenbankprogrammierung 0
V keine Verbindung möglich (Access-DB) Datenbankprogrammierung 3
Thallius MySQL JDBC auf Linux Server zu mySQL DB auf anderem Linux Server wirft Access denied Datenbankprogrammierung 5
Z [JDBC][MYSQL] Access denied Datenbankprogrammierung 7
J Unterschied @Id und @Access? Datenbankprogrammierung 5
MaxG. Access Datenbank Datenbankprogrammierung 48
I Access Datenbank in Table einlesen lassen Datenbankprogrammierung 2
D UCanAccess / MS Access - Tabelle / Spalte vorhanden Datenbankprogrammierung 3
J Java 8 und Microsoft Access Database-Dateien(mdb) Datenbankprogrammierung 1
W Access DB Metainfo hinzufügen Datenbankprogrammierung 8
Z Finde den Fehler: Daten aus einer Access-Datenbank lesen Datenbankprogrammierung 12
S HSQLDB Zugriff auf Access Datenbank Datenbankprogrammierung 0
Neumi5694 MS Access Sicherheit entfernen Datenbankprogrammierung 0
F Brauche dringend Hilfe Java-Access Connection Datenbankprogrammierung 3
L mdb (access) ansteuern: Welcher weg ist der Beste Datenbankprogrammierung 3
D Java MS Access Verbindung Datenbankprogrammierung 10
Neumi5694 MS Access Tabellenbesitzer ändern Datenbankprogrammierung 0
V Datenbank Access einbinden Datenbankprogrammierung 11
A Verbindung mit Access 2007 Datenbank herstellen Datenbankprogrammierung 1
Neumi5694 Java + MS Access + 64 Bit = Fehler -1073740777 Datenbankprogrammierung 2
R MS-Access mit JAva auslesen Datenbankprogrammierung 7
J Verbindung zu Access Datenbank Datenbankprogrammierung 15
Gossi MySQL Access denied Datenbankprogrammierung 11
J Access Datenbank mit JAVA erstellen - boolean Werte Datenbankprogrammierung 4
F Insert into Access Datenbankprogrammierung 3
C Access Datenbankprogrammierung 2
T Access 32bit on Win7 64Bit ODBC Problem Datenbankprogrammierung 1
H Microsoft Access Treiber wird nicht gefunden Datenbankprogrammierung 9
E Access Datenbank, Linux Umgebung Datenbankprogrammierung 4
E Access Datenbank mit Insert befüllen Datenbankprogrammierung 5
M Access Update Statement Fehler update -> unmöglich? Datenbankprogrammierung 3
M Access Abfrage mit Parameter & Access/Java liefern unterschiedliche Ergebnisse Datenbankprogrammierung 2
M Access Datensatz beinhaltet ESC-Zeichen Datenbankprogrammierung 3
K MySQL JDBC - Access Datenbank - unbekannter TabellenName Datenbankprogrammierung 4
K Access Datenbank mit Java auf win7 64bit Datenbankprogrammierung 14
S Access 2007 zugreifen- ODBC Driver Manger Datenbankprogrammierung 3
R MS Access mit Java Problem mit Update Statment Datenbankprogrammierung 13
F Zugriff auf MS Access-Datenbank mit jackcess Datenbankprogrammierung 10
P Access Datenbank durchsuchen Datenbankprogrammierung 8
M Problem mit Hibernate und Access Datenbankprogrammierung 9
S Datenbankapplikation von Access -> Java Datenbankprogrammierung 18
B MAC Access Datenbank in Java verwenden - Treiberproblem Datenbankprogrammierung 2
J mit java in access DB über odbc/jdbc Datenbankprogrammierung 2
NoXiD Access Datenbank in java einbinden ohne ODBC treiber zu erstellen Datenbankprogrammierung 5
C MS Access und Jarkarta POI Datenbankprogrammierung 4
T Problem bei Zugriff auf Access Datenbank Datenbankprogrammierung 7
E [ACCESS ODBC] INSERT INTO Fehler Datenbankprogrammierung 4
Q Access Datenbank in eine Internetseite einbinden Datenbankprogrammierung 2
H java.sql.SQLException: Access denied for user 'root'@'localhost' (using password : YES) Datenbankprogrammierung 1
M Zugriff auf eine Access-Datenbank innerhalb eines jar-Files Datenbankprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben