ODBC Treiber Problem/oder unvermögen

schiksi

Mitglied
Hallo an euch,

ich habe folgendes Problem und zwar versuche ich für ein Projekt einen Sportartikelversand zu erstellen.
Dieser soll Kunen Artikel usw. in einer DB abspeichern können bzw. Daten draus laden.
Nun bekomme ich es nicht hin die Datenbank mit meinem code zu verknüpfen...hab in Access eine Tabelle Kunde mit 50 Kunden erstellt die die mdb heißt "ln1_kirn".
Mein code um Daten aus der DB zu holen ist folgender

Java:
public class Datenbankübertragung {
    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("Strasse"));  
               Ablage.KundenListe.add(meinKunde);
               

           }                     
       }
       
       catch (SQLException e2){
           JOptionPane.showMessageDialog(null, "SQL Exception");
       }
       
       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");
           }
       }}
ich bekomme immer die SQL Exception und SQL-Fehler beim Speichern.

in Ablage habe ich einen KundenListe Array geschrieben, falls dass noch von notwendigkeit für euch ist.
System hab ich einen Dell xps win 7 64bit.

Vielen Dank schonmal
 
okay dann muss ich mal schauen, wie ich die exception mir ausgeben lasse.
aber das andere problem ist, dass ich ja sehen würde wenn er auf die datenbank zugreifen würde. jedoch ändert der nichts an der db. zumindest zeigt mir das, dass veränderungsdatum der datenbank datei...also ich befürchte der baut erst gar keine verbindung auf =( wenn ich etwas reinschreiben will gibt er mir "sql fehler beim speichern:[Microsoft][odbc driver manager]der angegebene dsn weist eine nicht übereinstimmende architektur von treiber und anwendung auf" jedoch lad ich den treiber in der C:\Windows\SysWOW64\odbcad32.exe..
 
also hat jetzt beim rauslesen diese fehler wie beim einlesen ich oben schon geschriebn hab :

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Der angegebene DSN weist eine nicht ?bereinstimmende Architektur von Treiber und Anwendung auf.

java.lang.NullPointerException

hab sie mit "System.err.println(e);" bzw "System.err.println(e2);" auslesen lassen
 
also hat jetzt beim rauslesen diese fehler wie beim einlesen ich oben schon geschriebn hab :

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Der angegebene DSN weist eine nicht ?bereinstimmende Architektur von Treiber und Anwendung auf.

Keine Ahnung, aber wenn ich danach im Internet suche, erhalte ich folgenden Treffer mit Lösungsmöglichkeit:

Windows 7 64-Bit und ODBC Treiber für Access – Endlich gelöst | Thomas Schiffler - Individuelle Softwareentwicklung

Vielleicht hilft dir das ja irgendwie weiter. Hat vermutlich was mit dem Treiber oder dem URL-String zu tun...

java.lang.NullPointerException

Vielleicht wird dir ja auch angezeigt, wo diese NullPointerException auftritt. Wahrscheinlich ist es ein Folgeproblem von dem Treiberproblem weiter oben.
 
habs jetzt gerade mal an meinem uralt 32 bit xp rechner ausprobiert. da gibt er mir nur noch eine null point exception bei fehler sql exception... =(
 
habe das problem mit der verbindung, jetzt schluss endlich gelassen, da es wohl auch andere nur mit 32 bit systemem lösen und unser prof auch nur damit handiert.
jetzt habe ich noch das problem, dass er mir sagt:

java.sql.SQLException: Column not found

habe die zeilen mit der meiner Access datenbank verglichen und es passt eigentlich...

Java:
    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);
               

           }                     
       }[/Java]
 
java.sql.SQLException: Column not found

habe die zeilen mit der meiner Access datenbank verglichen und es passt eigentlich...

Wird dir da nicht angezeigt, welche Column er nicht findet? Musst du nochmal genauer nachschauen, weil irgendeine Spalte in deiner Tabelle wird nicht gefunden. Vielleicht ein Schreibfehler irgendwo?
 
Ich dachte eigentlich, dass die SQLException die fehlerhafte column mit anzeigt. Hmm, du musst halt wirklich nochmal alles auf Schreibfehler durchschauen (Gross-/Kleinschreibung auch beachten)...

Evtl. musst du dir mal von der SQLException mit getSQLState und getErrorCode noch weitere Infos ausgeben lassen.
 
Zuletzt bearbeitet von einem Moderator:
Hmm, wie gesagt, die Fehlermeldung weist eigentlich darauf hin, dass eine angeforderte Spalte nicht exisitert, also entweder garnicht vorhanden oder falsch geschrieben. Das müsste sich doch eigentlich sicher überprüfen lassen. Ansonsten würde mir noch einfallen, alle Spaltenabfragen erstmal wieder rauszunehmen und nur mit einer anzufangen, diesen Wert dann testweise auf der Konsole auszugeben und nach und nach die anderen Spalten zu der Abfrage hinzufügen. Und dann schauen, ab wann der Fehler auftritt...
 
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?
 
Vielleicht liegt es daran:
Java:
...
Kunde meinKunde = new Kunde();
meinKunde.setKD_Nr(rset.getInt("KundenNr"));               
meinKunde.setFName(rset.getString("Firmenname"));
meinKunde.setFName(rset.getString("Kontaktperson"));
...
Du schreibst sowohl den Firmenname als auch die Kontaktperson bei Kunde nach FName...

Wer weiss, vielleicht hast du auch woanders noch solche ähnlichen Fehler...
 
Zuletzt bearbeitet von einem Moderator:
hey das mit dem fname hab ich auch grad bemerkt...
hat aber das problem leider nicht gelöst...
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
 
vielen vielen dank schon mal!!! kann jetzt die Kunden perfekt aus der db auslesen.

es lag an dem ß...
4 stunden sinnlos verschwendet und an sich selbst gezweifelt...

Vielen vielen dank!
 

Neue Themen


Zurück
Oben