Datenbankzugriff auf Access Datenbank

schiksi

Grünschnabel
Hallo an alle,

ich hae ein Problem, dass wenn ich mit meinem Programm auf meine Access Datenbank zugreifen will, gibt er mir die Fehlermeldung : "java.sql.SQLException: Column not found" aus. Habe eine Access Datenbank mit dem Namen "ln1_kirn" in der ne Tabelle mit dem Namen Kunde drin ist wo 50 Werte drin sind. Die Verbindung stell ich über den odcb her was denk ich mal tut, weil er aufjedenfall zugreift, was man an der temp datei erkennen kann.

Code:
     public static final String TREIBER="sun.jdbc.odbc.JdbcOdbcDriver";
    public static final String URL="jdbc:odbc:ln1_kirn";

 public static void fromDB() throws SQLException, ClassNotFoundException {
       Connection myCon=null;
       Statement myStmt=null;
       String sql2;
       ResultSet rset=null;
       sql2="Select * from Kunde";
       try {
           Class.forName(TREIBER);
           myCon = DriverManager.getConnection(URL);
           myStmt=myCon.createStatement();
           rset=myStmt.executeQuery(sql2);
           while(rset.next()){           
               
               Kunde meinKunde = new Kunde();
               meinKunde.setKD_Nr(rset.getInt("KundenNr"));               
               meinKunde.setFName(rset.getString("Firmenname"));
               meinKunde.setFName(rset.getString("Kontaktperson"));
               meinKunde.setKEmail(rset.getString("Email"));
               meinKunde.setKD_Tel(rset.getString("Telefon"));   
               meinKunde.setKD_Fax(rset.getString("Telefax"));  
               meinKunde.setKD_Plz(rset.getInt("PLZ"));  
               meinKunde.setKStraße(rset.getString("Straße"));  
               Ablage.KundenListe.add(meinKunde);
               

           }                     
       }
       
       catch (SQLException e2){
           JOptionPane.showMessageDialog(null, "SQL Exception");
           System.err.println(e2); 
       }
       
       catch (ClassNotFoundException e3)
       {
           JOptionPane.showMessageDialog(null, "Class not Found Exception");
       }
       
       finally{
           try{
               rset.close();
               myStmt.close();
               myCon.close();
               JOptionPane.showMessageDialog(null, "Alle Kunden wurden ausgelesen");
           }
           catch(Exception e){
               JOptionPane.showMessageDialog(null, "SQL-Fehler beim Speichern");
               System.err.println(e); 
           }
       }}
    
    
}
jemand ne idee^^ wäre cool weil sonst soweit alles klappt...
 
Hi und willkommen bei tutorials.de,

bist du denn sicher, dass die Spalten in der Access-DB genau so heißen, wie du sie hier ansprichst?
Java:
               meinKunde.setKD_Nr(rset.getInt("KundenNr"));               
               meinKunde.setFName(rset.getString("Firmenname"));
               meinKunde.setFName(rset.getString("Kontaktperson"));
               meinKunde.setKEmail(rset.getString("Email"));
               meinKunde.setKD_Tel(rset.getString("Telefon"));   
               meinKunde.setKD_Fax(rset.getString("Telefax"));  
               meinKunde.setKD_Plz(rset.getInt("PLZ"));  
               meinKunde.setKStraße(rset.getString("Straße"));

Weil genau in dem Codeteil liegt der Fehler begraben. ;)
Du kannst auch in der ersten rset.get...-Abfrage einen Breakpoint setzen und mal debuggen und so nachgucken, auf welche Spalte er nicht zugreifen bzw. finden kann.

Gruß

Fabio
 
wenn ich alle schritte debug dann gibt er mir bei ablage.kundenliste.add(meinKunde) den sql fehler wenn ich es richtig sehe...kann das sein?
 
das sind die fehler die ich aus errcode und sql state bekomm:

java.sql.SQLException: Column not found
SQL state: S0022
Vendor code: 0
----------------
 
Ich glaub das ist nicht ablage.kundenliste.add(meinKunde) schuld, sondern die Zeile obendrüber.
Java:
meinKunde.setKStraße(rset.getString("Straße"));
Schau in der DB nochmal nach, ob die Spalte wirklich 'Straße' heißt und auch so geschrieben wird.

ps.: Bitte keine Doppelposts. Dafür gibt es die Bearbeiten-Funktion.
 
erstmal danke für deine bisherigen bemühungen =)

also ich hab test halber mal einen kunden in meine tabelle schreiben lassen, da hat es alles aus der tabelle gelöscht und ihn eingefügt. das komische ist, dass er die kontaktperson nicht reinschreibt. möglich dass hier der fehler ist? der debugger gibt den fehler er beim add Kunde fehler...geht der womöglich alles durch obwohl er schon einen fehler hat und erst wenn er ihn in die tabelle schreibt gibt er den fehler aus?
 
das komische ist, dass er die kontaktperson nicht reinschreibt. möglich dass hier der fehler ist?
Ja kann sein.

Hast du die Abfragen 'rset.get...' jetzt schon überprüft, ob die alle richtig sind?

der debugger gibt den fehler er beim add Kunde fehler...geht der womöglich alles durch obwohl er schon einen fehler hat und erst wenn er ihn in die tabelle schreibt gibt er den fehler aus?
Das glaube ich eher weniger. Die SQL-Exception wird dann geschmissen, wenn er ein Problem auf der DB-Seite bzw. Abfrage hat und nicht erst später.
 
bin die einzelnen rset dingern nochmal mit dem debugger durchgegangen und er macht bei keinem die sql exception erst wenn ich nach dem er auf straße war, dem letzten und ich dann noch einen schritt weiter geh die exception
 
Klar, die Exception wird erst dann geschmissen, wenn du die Zeile auch ausgeführt hast. D.h. ich lag vorhin schon damit richtig, dass die DB die Spalte 'Straße' nicht finden kann.
 
man glaubt es kaum aber es lag an einem einzigen kleinen buchstaben... ß aus der Straße musste ich in "ss" strasse umwandeln, weil sql nichts damit anfangen kann...naja jetzt laufts!! vielen dank aber an alle!
 
Zurück