Java Datenbank Abfrage MySQL

PEASANT KING

Commander
Registriert
Okt. 2008
Beiträge
2.412
Hallo Leute,

wieder mal arbeite ich mit Java und bastel mir gerade ne kleine GUI Anwendung mit der Ich Datenbankabfragen tätigen möchte soweit so gut.

Nur leider kann ich keine Abfrage schreiben, da beim schreiben ich schon einen Error erhalte.

PHP:
    dbConnect Kunde = new dbConnect();
    
    Statement stmt = null;
    ResultSet res  = null;
    
    stmt = Kunde.conn.createStatement();
    rs = stmt.executeQuery("SELECT * FROM kunde");

So sollte der Query gestartet werden.
dbConnect ist eine Java Klasse wo lediglich die Verbindung zur Datenbank hergestellt wird und der Treiber geladen wird.

Bei den Variablen hat Netbeans immer die Eigenschaft es als Klasse anzusehen, obwohl es deklarierte Varialben sind siehe oben im Code -.- was mache ich falsch ?
 
Was denn für ein Error? Sieht so jetzt nicht verkehrt aus, mal abgesehen davon, dass nicht ersichtlich ist, was in dbConnect abgeht.
 
Die Klasse dbConnect sieht wie folgt aus:
PHP:
public class dbConnect {

    // Diese Eintraege werden zum 
    // Verbindungsaufbau benoetigt. 
    final String hostname = "localhost"; 
    final String port = "3306"; 
    final String dbname = "wawi"; 
    final String user = "xxxx"; 
    final String password = "xxxx"; 
    
    public static Connection conn = null; 
    
        public dbConnect(){
            
            try { 
                Class.forName("org.gjt.mm.mysql.Driver").newInstance();
                System.out.println("Treiber wurde geladen.");
            } 
            catch (Exception e) { 
                System.err.println("Treiber konnte nicht geladen werden."); 
            }
            try {
                String url = "jdbc:mysql://"+hostname+":"+port+"/"+dbname; 
                conn = DriverManager.getConnection(url, user, password);
                System.out.println("Es wurde sich erfolgreich an der Datenbank:" +url+ " angemeldet.");
            }
            catch (Exception e) {
            }
        }
}
 
Sorry die Fehlermeldung lautet:
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - cannot find symbol
symbol: class stmt
@skilles ja ich weiß leerer catch ^^
stmt ist aber keine Klasse sondern eine Statement Variable
 
Ja die lib ist eingebunden.
Es kommt ja auch eine Verbindung zu stande, allerdings kann ich garkeinen Query absetzen da stmt als Klasse interpretiert wird, das gleiche gilt auch für res.
 
Bei mir klappts so.


Code:
import java.sql.ResultSet;
import java.sql.Statement;

public class MySQL {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        try {
            dbConnect kunde = new dbConnect();

            Statement stmt = null;
            ResultSet res = null;

            stmt = kunde.conn.createStatement();
            res = stmt.executeQuery("SELECT * FROM kunde");
            while (res.next()) {
                System.out.println(res.getString("name"));
                System.out.println(res.getString("vorname"));
            }
        } catch (Exception ex) {
            System.err.println(ex);
                   
        }
    }
}


Code:
import java.sql.Connection;
import java.sql.DriverManager;

public class dbConnect {

    // Diese Eintraege werden zum 
    // Verbindungsaufbau benoetigt. 
    final String hostname = "localhost";
    final String port = "3306";
    final String dbname = "test";
    final String user = "root";
    final String password = "";
    public static Connection conn = null;

    public dbConnect() {

        try {
            Class.forName("org.gjt.mm.mysql.Driver").newInstance();
            System.out.println("Treiber wurde geladen.");
        } catch (Exception e) {
            System.err.println("Treiber konnte nicht geladen werden.");
        }

        try {
            String url = "jdbc:mysql://" + hostname + ":" + port + "/" + dbname;
            conn = DriverManager.getConnection(url, user, password);
            System.out.println("Es wurde sich erfolgreich an der Datenbank:" + url + " angemeldet.");
        } catch (Exception e) {
            System.err.println(e);
        }
    }
}


nichts geändert, außer dass deine ResultSet-Variable falsch war und die Variable Kunde nun kleingeschrieben ist (konform). Code könnte natürlich noch verbessert werden, aber das steht hier nicht zur Debatte.

Edit: Imports noch beachten
 
Zuletzt bearbeitet:
Wunderbar allerdings möchte ich kein main in meiner ViewKunde haben.
Oder muss ich ein main haben damit es so funktioniert ?
Die View wird über einen Button in der Mainview aufgerufen bei mir und soll dann beim Aufruf den Query absetzen und mir das Result in der ViewKunde anzeigen.
 
Dumme Idee: Lag es daran, daß du die Variable "Kunde" mit großem Anfangsbuchstaben geschrieben hast? In Java ist es Standard, nur Klassennamen vorne groß zu schreiben, Variablen- und Funktionsnamen klein. Versuch mal, ob es dann geht.
 
@DJ_We$t
Nein musst du natürlich nicht. Habs nur getrennt, damit ichs kurz testen konnte, weil ich ja keine GUI habe.

@NullPointer
Nein, daran lags nicht. Das wird nur moniert, aber nicht als Fehler deklariert. Ich vermute mal an 'nem falschen Import oder evtl. an der falsch geschriebenen Variable vom ResultSet (siehe 1. Post ResultSet res = null; rs = stmt.executeQuery("SELECT * FROM kunde"); )
 
Zuletzt bearbeitet:
Ja ich nutz ja auch ne IDE um genau zu sein Netbeans 7.0 :D
 
Die sagte mir class rs not found -.-
 
Kann ich nicht nachvollziehen, aber vielleicht handhabt Netbeans das ja tatsächlich so. :D Da lob ich mir doch Eclipse.^^

Wobei der Hinweis allein, dass da irgendetwas nicht passt mir in dem einfachen Fall auch schon reichen würde.
 
Zuletzt bearbeitet:
Zurück
Oben