tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
501
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Serethos Serethos ist offline Mitglied Gold
    Registriert seit
    Nov 2004
    Beiträge
    127
    Hallo,

    Ich hab eine kleine Klasse geschrieben die über den JDBC/ODBC Treiber auf eine Excel Datei zugreift. Mein Problem ist eine Fehlermeldung von einem SQL-Statement wo ich nicht weiter weiß.

    Also meine Frage: hab ich was an den Statemant falsch geschrieben; oder kann man nicht alle SQL-Statements benutzen?


    Hier ist meine Klasse
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    public static void main(String[] args){
      try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        String dbpath = "E:/eigene Dateien/test/test.xls";
        Connection con = null;
        con = DriverManager.getConnection("jdbc:odbc:DRIVER={Microsoft Excel Driver (*.xls)};DBQ="
            + dbpath);
        Statement stmt = con.createStatement();
        ResultSet mehr = stmt.executeQuery("Select Name from test " +
                    "where Betriebsname like '%Ingo%';");
        while(mehr.next()){
            System.out.println(mehr.getString(1));
        }
        con.close();
      } catch (SQLException e) {
        System.out.println("Fehler "+e.getSQLState());
        System.out.println("Fehler2 "+e.getErrorCode());
       } catch (ClassNotFoundException e1) {
        e1.printStackTrace();
      }
    }
    Ausgabe:
    Fehler s1000
    Fehler -1028



    Hat sich erledigt.

    Fehler lag in der Namensbezeichnung der Excel-Tabelle. Die Namensbezeichnung wird bei einem Neustart gelöscht.

    Tip: Sich auch noch e.getMessage bei der Exeption ausgeben lassen.
    Geändert von Serethos (21.11.06 um 13:41 Uhr)
     

  2. #2
    Serethos Serethos ist offline Mitglied Gold
    Registriert seit
    Nov 2004
    Beiträge
    127
    Nach dem ich diesen Fehler ausgebessert habe ist alles nur noch schlimmer geworden.

    Mein kleine Klasse ist jetzt etwas gewachsen und hat dadurch auch neue Fehler bekommen, die ich leider nicht feststellen kann. Ich hoffe einer von euch kann mir weiter helfen.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    
    public class Excel{
      public static void main(String[] args){
          int i=0;
          Connection con = null;
          try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String dbpath = "E:/eigene Dateien/test/test.xls";
            con = DriverManager
                .getConnection("jdbc:odbc:DRIVER={Microsoft Excel Driver (*.xls)};DBQ="
                        + dbpath);
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery("Select Dopplung, Name,plz,str from test");
            ResultSet mehr = null;
            while(rs.next()){
                System.out.println(rs.getString(1)+"--"+rs.getString(2)+"--"+rs.getString(3)+"--"+rs.getString(4));
                mehr = stmt.executeQuery("Select Dopplung,Name,plz,str from test " +
                "where Betriebsname like '%"+rs.getString(2)+"%';");
                while(mehr.next()){
                    System.out.println(mehr.getString(1)+"--"+mehr.getString(2)+"--"+mehr.getString(3)+"--"+mehr.getString(4));
                    i++;
                }
            }
            rs.close();
            mehr.close();
        } catch (SQLException e) {
            System.out.println("Fehler "+e.getMessage());
            System.out.println("Fehler1 "+e.getErrorCode());
            System.out.println("Fehler2 "+e.getSQLState());
        } catch (ClassNotFoundException e1) {
            e1.printStackTrace();
        }
        try {
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }          
       }
      
      }
    Mein Ausgabe

    null--Hugo--11111--Muster 2
    Fehler No data found
    Fehler1 0
    Fehler2 null

    Hugo ist mein 1. Datensatz in der Excel-Tabelle
     

  3. #3
    Serethos Serethos ist offline Mitglied Gold
    Registriert seit
    Nov 2004
    Beiträge
    127
    Hab den Fehler nach mehrmaliges lesen der API gefunden.

    A ResultSet object is automatically closed when the Statement object that generated it is closed, re-executed, or used to retrieve the next result from a sequence of multiple results.

    Ich freue mich trozdem auf tips wie diese Problem noch gelöst werden kann.

    1. Tip

    Man benutzt eine ArrayList in der man die Namen der Tabelle reinschreibt.
    Select Name fromt test;
    arrayList.add(x.getString())
    Und diese dann durch get(i) wieder ausliest und sich daraus sein Statement Bastelt
    Select Name from Test where Name like '%"+arraylist.get()+"%';
     

Ähnliche Themen

  1. Nicht vorhandene Einträge suchen
    Von erika7 im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 20.08.10, 11:32
  2. Fehlende Einträge suchen
    Von Sasser im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 05.01.09, 16:47
  3. Antworten: 4
    Letzter Beitrag: 28.04.06, 15:52
  4. [Excel] Einträge zählen
    Von Snape im Forum Office-Anwendungen
    Antworten: 2
    Letzter Beitrag: 08.11.05, 10:06
  5. Einträge suchen (Wildcards?)
    Von maceo im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 14.09.04, 09:02