Klassen und Datenbankzugriff

wachteldonk

Erfahrenes Mitglied
Ich habe folgende Datenbankklasse erzeugt


Code:
public class JDb {

    public static String STRusername = "root";
    public static String STRpassword = "";
    public static String STRport = "3306";
    public static String STRdatabase = "test";
    public static String STRhost = "localhost";
    public static Connection con = null;
    public static Statement stmt = null;
    public static ResultSet rs = null;

    public void ConnectDb() {
        try {
            Class.forName("com.mysql.jdbc.Driver");

            String connectionUrl = "jdbc:mysql://" + STRhost+ ":" + STRport +"/" + STRdatabase+ "?" + "user=" + STRusername + "&password=" + STRpassword + "";
            con = DriverManager.getConnection(connectionUrl);

        } catch (SQLException e) {
            System.out.println("SQL Exception: "+ e.toString());
        } catch (ClassNotFoundException cE) {
            System.out.println("Class Not Found Exception: "+ cE.toString());
        }
    }
   public void makeQuery(String strSQL) {

            //SQL query command
            this.stmt = this.con.createStatement();
            this.rs = this.stmt.executeQuery(strSQL);
            while(this.rs.next()) {
               System.out.println("A");
            }

   }
}


Aber

Code:
while(this.rs.next()) {


erzeugt imme reinen Fehelr. Warum?
 
Hallo,

der Fehelr taucht nicht bei der Ausführung auf. Deshalb ist der SQl String eher egal.

Sondern es wird im Codeeditor rot unterstrichen

Ist halt mein erster VErsuch mit Java:)

Ich benutze Netbeans und das gibt als Error das an:

"Unexpected
 

Anhänge

  • apic1.jpg
    apic1.jpg
    38,8 KB · Aufrufe: 21
  • apic2.jpg
    apic2.jpg
    39,7 KB · Aufrufe: 21
Moin,

ach so, das ist was anderes ... ;)

Gut, das Du die Bilder mit dran gehängt hast, dort sthet nämlich "unreported" und nit "unexpected" :p

Dein Aufruf von 'next' gibt Dir ggf. eine SQL-Exception, die Du hier abfangen musst (!)

Geh' mal zur Schnellkorrektur (entweder <Strg><1> mit Cursor in der Zeile oder rechte Maustaste links auf der zugehörigen roten Markierung) !

Da findest Du schnell die passenden Lösungsmöglichkeiten ...

Gruß
Klaus
 
Na, das ist doch so ziemlich die aussagekräftigste Fehlermeldung, die man bekommen kann?!

Exeptions sagen dir was? Das ist ein Konzept, mit dem man in Java auftretende Fehler an die aufrufenden Klassen weiterleiten kann -entweder nach dem Motto, ich hab keine Lust, mich drum zu kümmern, ich geb die A-Karte weiter, oder aber, ich weiß nicht, wie ich mit diesem Fehler umgehen soll, hilf mir bitte...

Jedenfalls kann es passieren, dass die next() Methode eine SQLException wirft - aus welchen Gründen auch immer. Und du musst dich jetzt darum kümmern.

Entweder setzt du den Aufruf in ein

Java:
try{
//Hier dein Code
}catch(SQLException e) {
System.err.println("Sth ist wrong with SQL...")
e.printStackTrace();
}

oder aber du wirfst den Fehler einfach weiter, indem du deinem Methodenkopf ein "throws SQLException" anhängst...

mg,

RoCMe
 
Ich habe folgende Datenbankklasse erzeugt


Code:
....
   public void makeQuery(String strSQL) {

            //SQL query command
            this.stmt = this.con.createStatement();
            this.rs = this.stmt.executeQuery(strSQL);
            while(this.rs.next()) {
               System.out.println("A");
            }

   }
....
}


Aber

Code:
while(this.rs.next()) {


erzeugt imme reinen Fehelr. Warum?


Hi!

Das liegt daran, dass du in der Methode "makeQuery()" keine try-catch-Funktion eingebaut hast! Deshalb meckert NetBeans!

Es muss so heissen:

Entweder so:
Code:
....
   public void makeQuery(String strSQL) throws SQLException  {

            //SQL query command
            this.stmt = this.con.createStatement();
            this.rs = this.stmt.executeQuery(strSQL);
            while(this.rs.next()) {
               System.out.println("A");
            }

   }
....
}

oder so

Code:
....
   public void makeQuery(String strSQL)  {

           try
          {
                 //SQL query command
                 this.stmt = this.con.createStatement();
                 this.rs = this.stmt.executeQuery(strSQL);
                 while(this.rs.next()) {
                     System.out.println("A");
                  }
           }
           catch( SQLException ex )
           {
                        .....
           }

   }
....
}

Gruß
Sebastian29
 
Hallo,

danke.

So, jetzt ist laut Editor alles ok. Erst beim starten erhalte ich eine Fehlermeldung, dass irgendwo ein Fehler sein muß. Das Projekt läuft aber dann sauber durch
 

Anhänge

  • cpic.jpg
    cpic.jpg
    64 KB · Aufrufe: 20
  • dpic.jpg
    dpic.jpg
    27,8 KB · Aufrufe: 19
Zuletzt bearbeitet:
Schau mal in deiner letzten Posting im 1. Bild! Dort sehe ich ganz unten rechts ein roter Strich im NetBeans! Da muss ein Fehler sein. Wenn ein NetBeans meckert, dann kann er auch nicht compilieren.

Gruß
Sebastian29
 
hallo,

nein, da ist kein Fehler. Was du da gesehen hast war wohl ein Abbruch durch den User.

Wie egsagt compiliert er ja. Das Programm läuft ja dann trotzdem ohne Probleme.
 
Zurück