Referenzierungsproblem

  • Themenstarter Steffen4Steffen
  • Beginndatum
Status
Nicht offen für weitere Antworten.
S

Steffen4Steffen

Gast
Hallo zusammen,

eigentlich ein viel zu schöner Tag um zu programmieren, dennoch habe ich das traurige Los gezogen und muss mich sputen fertig zu werden. Ich habe mittels JDBC eine Anbindung an eine Access DB hergestellt, Daten sollen über Java eingetragen bzw verändert werden. Bin eigentlich fertig, jedoch habe ich das Problem das in der Main Methode meiner GUI Klasse die entsprechenden Methoden (Verbindungsaufbau, ...) nicht ausgeführt werden wegen folgender Fehlermeldung:
"non static variable user cannot be referenced from a static context"

hier der Code

Code:
package KundenUndAuftragsverwaltung1;
import java.sql.*;
public class KundeAnlegen {
    
   
     private int result;
     String url = "jdbc:odbc:Kunde_SS06";
     String user = "unknown";
     String passw = "unknown"; 
     private Connection con = null;
	
    // Schritt 1: Connection mit der DB aufnehmen // 
    public void connect(String url, String user, String passw) throws Exception
    {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        con = DriverManager.getConnection(url, user, passw);
        System.out.println("Connection erfolgreich!");
    }   
    
    //Anlegen des Kunden 
    public static void main(String[] args) throws Exception
    {       
        
        String[] name = {"KFZ-Zubehoer GmbH", "Tankbau & Partner KG"};
        String[] adresse = {"Dortmund, Poststr. 12", "Bochum, Suedstr. 23"};      
        int[] plz = {44137, 44867};
        
        KundeGUI ref = new KundeGUI();
        ref.connect(url, user, passw);
        ref.insertIntoKunde_SS06();
        ref.insertIntoKundentabelle (name, adresse, plz);
        ref.releaseConnection();
        
        
    }
    
}

Meine Basisklasse aus der ich die Funktionen ziehe:

Code:
package KundenUndAuftragsverwaltung1;
import java.sql.*;
public class Kunde
{	
   // Schritt 1: Connection mit der DB aufnehmen // 
    String url = "jdbc:odbc:Kunde_SS06";
    String user = "unknown";
    String passw = "unknown";
    private int result;
      
    private Connection con = null;
	
    public void connect (String url, String user, String passw) throws Exception
    {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        con = DriverManager.getConnection(url, user, passw);
        System.out.println("Connection erfolgreich!");
    }
        
    // Schritt 2 SQL Statements bestimmen und absenden
    
    public void insertIntoKunde_SS06 (String[] name, String[] adresse, int[] plz) throws SQLException 
    {
        PreparedStatement stmt = con.prepareStatement ("INSERT INTO " + "Kunde_SS06 VALUES (?,?,?)");
        
        for (int i = 0; i < name.length; i++)
        {
            stmt.setString (1, name[i]);
            stmt.setString (2, adresse [i]);
            stmt.setInt (3, plz[i]);
            
            // Schritt 3: Auswertung des Ergebnisses
            stmt.executeUpdate();
        }
        
        // Schritt 4: Schließen des SQL Statements
        stmt.close();
        System.out.println("Kunden erfolgreich eingefügt!");
    }
    
   // Schritt 5: Schließen der Verbindung
    
    public void releaseConnection() throws SQLException 
    {
        con.close();
    }



Wie muss ich die Methoden denn in der main Methode von KundeAnlegen einfügen, damit dieser Fehler nicht auftritt?

Danke im Voraus für die Hilfe.

Marko
 

Leroy42

Top Contributor
url, usr und passw sind Instanzvariablen deiner Klasse KundeAnlegen;
sie existieren also nur im Kontext einer Instanz dieser Klasse.

main widerum ist statisch und kann daher auch nur auf statische Komponenten
zugreifen:

Lösung:
- Erzeuge in main eine Instanz der Klasse.
- Verlagere deine Aktionen aus main in irgendeine nicht-statische Methode.
- Schicke dann die Nachricht an dein erzeugtes Objekt.

Ungefähr:

Code:
...main(...) {
  KundeAnlegen ka = new KundeAnlegen();
  ka.makeKunde();
}
Weiter kann ich dir leider nicht helfen, da mir deine Klassenstrukturen
vollkommen abstrus vorkommen :autsch:

Ich kann mir z.B. nichts unter einer Klasse KundeAnlegen vorstellen;
einen neuen Kunden anzulegen ist doch eine Aktion und keine Klasse
wie z.B. class Kunde oder class KundeGUI, die machen ja noch Sinn. :shock:
 

personenkult

Aktives Mitglied
ref.insertIntoKunde_SS06();
ref.insertIntoKundentabelle (name, adresse, plz);

kann sein, dass die beiden Methoden nicht richtig aufgerufen werden?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Referenzierungsproblem Java Basics - Anfänger-Themen 3

Ähnliche Java Themen


Oben