# JDBC Problem



## vinzsanity (3. Jan 2005)

Hallo,

ich hab folgendes Problem!Ich muß über eine GUI auf eine Access Datenbank zugreifen!!!

So sieht mein Code aus:


```
package dbs2_blatt4;

/**
 * 

Title: Datenbankzugriff über GUI-Oberfläche</p>
 *
 * 

Description: </p>
 *
 * 

Copyright: Copyright (c) 2004</p>
 *
 * 

Company: rentmobile.de</p>
 *
 * @author Raoul Wanga
 * @version 1.0
 */


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.sql.*;
import java.util.*;

public class Konto_GUI extends JFrame{
  Container pane = new Container();
  JTextField tf1 = new JTextField();
  JTextField tf2 = new JTextField();
  JTextField tf3 = new JTextField();
  JLabel lb1 = new JLabel("Name");
  JLabel lb2 = new JLabel("PIN");
  JLabel lb3 = new JLabel("Konto");
  JLabel lb4 = new JLabel();
  JButton button = new JButton("Kontostand");
  JLabel l = new JLabel();
  //File f = new File("D:/UNI/VS2/telefon.dat");
    private GridBagConstraints gbconstraints;
    private GridBagLayout gbTrace;
   // private Container pane;
    public Konto_GUI() {
       super("Konto");
       //Container pane = new Container();
       getContentPane().add(pane);
       //pane =  getContentPane();
       gbTrace = new GridBagLayout();
       pane.setLayout(gbTrace);
       gbconstraints = new GridBagConstraints();
       /*
       pane.add(tf1);
       pane.add(bu1);
       pane.add(tf2);
       pane.add(bu2);
       pane.add(tf3);
       pane.add(bu3);

       pane.add(textarea);
       */
      gbconstraints.fill = GridBagConstraints.BOTH;
      ajouterComposant(lb1, 0, 0, 1,1);

      //gbconstraints.fill = GridBagConstraints.HORIZONTAL;
      ajouterComposant(tf1, 0, 1, 1,1);

      gbconstraints.fill = GridBagConstraints.BOTH;
      ajouterComposant(lb2, 1, 0, 1,1);

      //gbconstraints.fill = GridBagConstraints.BOTH;
      ajouterComposant(tf2, 1, 1, 1,1);


      gbconstraints.weightx = 100;
      gbconstraints.weighty = 100;
      gbconstraints.fill = GridBagConstraints.BOTH;
      ajouterComposant(lb3, 2, 0, 1,1);

      gbconstraints.fill = GridBagConstraints.BOTH;
      ajouterComposant(tf3, 2, 1, 1,1);

      //gbconstraints.fill = GridBagConstraints.BOTH;
      ajouterComposant(button, 3, 0, 2,1);
      gbconstraints.weightx = 100;
      gbconstraints.weighty = 100;

      gbconstraints.fill = GridBagConstraints.BOTH;
      ajouterComposant(lb4, 3, 1, 1, 1);



       pack();
       setVisible(true);

       button.addActionListener(new ActionListener(){
           public void actionPerformed(ActionEvent e){
               String name = tf1.getText();
               String pin = tf2.getText();
               try{
                   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                   Connection connection = DriverManager.getConnection("jdbc:odbc:Aufgabe_4", "","");
                   PreparedStatement pstmt = connection.prepareStatement(
                           "create function f(name, pin) returns table as return (select * from kunde where Kundenname=@name and PIN=@pin )");
                   CallableStatement cstmt = connection.prepareCall("select * from f");
                   ResultSet resultSet = cstmt.executeQuery();
                   //ResultSet resultSet2 = statement.executeQuery("");

                   StringBuffer results = new StringBuffer();
                   ResultSetMetaData metaData = resultSet.getMetaData();

                   results.append(metaData.getColumnName(0));

                   cstmt.close();
                   connection.close();

                   tf3.setText(results.toString());

               }
               catch (SQLException sqlException) {
                   JOptionPane.showMessageDialog(null, sqlException.getMessage(), "DATENBANK FEHLER!!",
                           JOptionPane.ERROR_MESSAGE);
                   System.exit(0);
               }
               catch (ClassNotFoundException classNotFound){
                   JOptionPane.showMessageDialog(null, classNotFound.getMessage(), "TREIBER NICHT GEFUNDEN!!",
                           JOptionPane.ERROR_MESSAGE);
               }
           }
       }



               );

    }

  public void ajouterComposant (Component composant, int ligne, int colonne, int largeur, int hauteur){
      gbconstraints.gridx = colonne;
      gbconstraints.gridy = ligne;
      gbconstraints.gridwidth = largeur;
      gbconstraints.gridheight = hauteur;
      gbTrace.setConstraints(composant, gbconstraints);
      pane.add(composant);

  }


    public static void main (String[] _) {
     Dimension d = new Dimension(400, 180);
     Konto_GUI g = new Konto_GUI();
     g.setSize(d);
    }


}
```

Wenn ich es starte dann kriege ich folgende Fehler :[Microsoft][ODBC Driver Manager]Der Datenquellename wurde nicht gefunden, 
und es wurde kein Standardtreiber angegeben.

Weiß nicht so genau was das bedeuten soll!
Ist es wegen der Datenbank Aufgabe_4??

Danke für die Hilfe !!
Gruß
vinzi[/code]


----------



## abollm (3. Jan 2005)

> Wenn ich es starte dann kriege ich folgende Fehler :[Microsoft][ODBC Driver Manager]Der Datenquellename wurde nicht gefunden,
> und es wurde kein Standardtreiber angegeben.
> 
> Weiß nicht so genau was das bedeuten soll!
> Ist es wegen der Datenbank Aufgabe_4??



Du weißt, wie man auf Win-OS-Ebene eine ODBC-DB-Verbindung konfiguriert?

Wenn nein, dann lies noch einmal nach (RTFM). Ansonsten hier nachfragen.

Hoffe dir geholfen zu haben.


----------



## Guest (4. Jan 2005)

Hmmm...ich versteh nicht so ganz genau was du meinst!
Was ist denn dieser RTFM!?
Wo soll ich denn nachlesen!?
Was muß ich denn so konfigurieren ?
Hab XP Pro auf meinem Rechner !
Und wo soll ich es konfigurieren auf Access?

Gruß
vinzi


----------



## Bleiglanz (4. Jan 2005)

Datenquelle einrichten über Systemsteuerung


----------



## abollm (4. Jan 2005)

Anonymous hat gesagt.:
			
		

> ...
> Was ist denn dieser RTFM!?
> ..



*R*ead *T*he*F*ine*M*anual

Es gibt auch eine üblere Variante dieser Abkürzung.


----------

