Hi,
ich wollte mal was mit Datenbanken machen und hab ein Java Programm programmiert das Daten in eine Access Datenbank speichert. Das Problem ist, dass es Probleme mit dem Treiber gibt. Es kommt immer eine Exeption. Was hab ich falsch gemacht? Hier noch der Code:
Die Datenbank heißt Kontaktverwaltung und liegt unter folgendem pfad:
C:\Users\grohmann\Documents\Kontaktverwaltung.accdb
ich wollte mal was mit Datenbanken machen und hab ein Java Programm programmiert das Daten in eine Access Datenbank speichert. Das Problem ist, dass es Probleme mit dem Treiber gibt. Es kommt immer eine Exeption. Was hab ich falsch gemacht? Hier noch der Code:
Java:
package Gui;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import Core.Datenbank;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;;
public class UserInterface extends JFrame{
public JPanel inputContainer;
public JPanel adresse;
public JPanel kontakt;
public JPanel name;
public JPanel buttonContainer;
public JLabel labelNachname;
public JLabel labelVorname;
public JLabel labelAnrede;
public JLabel labelStraße;
public JLabel labelHausnummer;
public JLabel labelOrt;
public JLabel labelEmail;
public JLabel labelTelefonnummer;
public JTextField textfieldNachname;
public JTextField textfieldVorname;
public JTextField textfieldStraße;
public JTextField textfieldHausnummer;
public JTextField textfieldOrt;
public JTextField textfieldEmail;
public JTextField textfieldTelefonnummer;
public JComboBox<String> comboboxAnrede;
public JButton save;
public JButton cancel;
String comboBoxListe[] = {"Auswählen", "Herr", "Frau"};
public UserInterface(){
this.setTitle("Address-Buch");
this.setSize(300,270);
this.setLayout(new BorderLayout());
inputContainer = new JPanel();
inputContainer.setLayout(new BorderLayout());
name = new JPanel();
name.setLayout(new GridLayout(3,2,2,2));
labelAnrede = new JLabel("Anrede");
labelNachname = new JLabel("Nachname");
labelVorname = new JLabel("Vorname");
comboboxAnrede = new JComboBox<>(comboBoxListe);
textfieldNachname = new JTextField(10);
textfieldVorname = new JTextField(10);
name.add(labelAnrede);
name.add(comboboxAnrede);
name.add(labelNachname);
name.add(textfieldNachname);
name.add(labelVorname);
name.add(textfieldVorname);
adresse = new JPanel();
adresse.setLayout(new GridLayout(3,2,2,2));
labelOrt = new JLabel("Ort");
labelStraße = new JLabel("Straße");
labelHausnummer = new JLabel("Hausnummer");
textfieldOrt = new JTextField(10);
textfieldStraße = new JTextField(10);
textfieldHausnummer = new JTextField(10);
adresse.add(labelOrt);
adresse.add(textfieldOrt);
adresse.add(labelStraße);
adresse.add(textfieldStraße);
adresse.add(labelHausnummer);
adresse.add(textfieldHausnummer);
kontakt = new JPanel();
kontakt.setLayout(new GridLayout(2,2,2,2));
labelEmail = new JLabel("E-Mail");
labelTelefonnummer = new JLabel("Telefonnummer");
textfieldEmail = new JTextField(10);
textfieldTelefonnummer = new JTextField(10);
kontakt.add(labelEmail);
kontakt.add(textfieldEmail);
kontakt.add(labelTelefonnummer);
kontakt.add(textfieldTelefonnummer);
buttonContainer = new JPanel();
buttonContainer.setLayout(new FlowLayout());
save = new JButton("Speichern");
cancel = new JButton("Abbrechen");
buttonContainer.add(save);
buttonContainer.add(cancel);
inputContainer.add(name, BorderLayout.NORTH);
inputContainer.add(adresse, BorderLayout.CENTER);
inputContainer.add(kontakt, BorderLayout.SOUTH);
this.add(inputContainer, BorderLayout.CENTER);
this.add(buttonContainer,BorderLayout.SOUTH);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void showWindow(){
this.setVisible(true);
}
public void listener(){
save.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent a) {
// TODO Auto-generated method stub
String nachname, vorname, straße, ort, eMail, anrede;
int hausnummer = 0;
long telefonnummer = 0;
boolean statusHausnummer = true, statusTelefonnummer = true, statusAnrede = true;
nachname = textfieldNachname.getText();
vorname = textfieldVorname.getText();
straße = textfieldStraße.getText();
ort = textfieldOrt.getText();
eMail = textfieldEmail.getText();
anrede = (String) comboboxAnrede.getSelectedItem();
try{
telefonnummer = Long.parseLong(textfieldTelefonnummer.getText());
statusTelefonnummer = true;
}catch(NumberFormatException e){
JOptionPane.showMessageDialog(null, "Bitte gülitige Telefonnummer eingeben!");
statusTelefonnummer = false;
}
try{
hausnummer = Integer.parseInt(textfieldHausnummer.getText());
statusHausnummer = true;
if(hausnummer > 10000){
JOptionPane.showMessageDialog(null, "Bitte gülitige Hausnummer eingeben!");
statusHausnummer = false;
textfieldHausnummer.setText(null);
}
}catch(NumberFormatException e){
JOptionPane.showMessageDialog(null, "Bitte gülitige Hausnummer eingeben!");
statusHausnummer = false;
}
if(anrede.equals("Auswählen")){
JOptionPane.showMessageDialog(null, "Bitte Anrede wählen");
statusAnrede = false;
}else{
statusAnrede = true;
}
if(statusAnrede == true && statusTelefonnummer == true && statusHausnummer == true){
System.out.println("Saved");
Datenbank db = new Datenbank(anrede,nachname,vorname,ort,straße,hausnummer,eMail,telefonnummer);
}
}
});
cancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent a) {
// TODO Auto-generated method stub
textfieldNachname.setText(null);
textfieldVorname.setText(null);
textfieldStraße.setText(null);
textfieldHausnummer.setText(null);
textfieldOrt.setText(null);
textfieldEmail.setText(null);
textfieldTelefonnummer.setText(null);
comboboxAnrede.setSelectedItem("Auswählen");
}
});
}
}
Java:
package Run;
import Gui.UserInterface;
public class RunProgramm {
public static void main(String[] args) {
// TODO Auto-generated method stub
UserInterface gui = new UserInterface();
gui.showWindow();
gui.listener();
}
}
Java:
package Core;
import java.sql.*;
public class Datenbank {
private String driverClass = "sun.jdbc.odbc.JdbcOdbcDriver";
private String url = " jdbc:odbc:Driver={Microsoft Access Driver (*.accdb)};DBQ=C:/Users/grohmann/Documents/Kontaktverwaltung.accdb";
private Connection con;
private Statement stmt;
private ResultSet rs;
public Datenbank(String anrede, String nachname, String vorname, String ort, String straße, int hausnummer, String eMail, long telefonnummer){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){
System.out.println("Datenbanktreiber nicht gefunden");
}
try {
con = DriverManager.getConnection(url,"","");
} catch (SQLException e) {
System.out.println("Connection fehlgeschlagen");
}
try {
stmt = con.createStatement();
} catch (SQLException e) {
System.out.println("Statement fehlgeschlagen");
}
try {
rs = stmt.executeQuery("INSERT INTO Tabelle1 (Anrede, Nachname, Vorname, Ort, Straße, Hausnummer, E-Mail, Telefonnummer, VALUES ("+ anrede + ", " + nachname + ", " + vorname + ", " + ort + ", " + straße + ", " + hausnummer + ", " + eMail + ", " + telefonnummer + ")");
} catch (SQLException e) {
System.out.println("Query Fehlgeschlagen");
}
}
}
Die Datenbank heißt Kontaktverwaltung und liegt unter folgendem pfad:
C:\Users\grohmann\Documents\Kontaktverwaltung.accdb