Avatar billede rogeer17 Nybegynder
13. december 2002 - 03:16 Der er 3 kommentarer og
1 løsning

Tom return på String

Jeg har to klasser, den ene er en GUI, den anden databaseconnector.

Jeg instantierer databasen fra GUI, og det virker fint.

Jeg vil have opdateret en label med et udtræk af et database kald, hvilket i sig selv også virker, jeg bruger en mouseEvent:

[Applet1]
    void cancelButton_mouseClicked(MouseEvent e) {
      nameLabel.setText(db.setNavn(loginField.getText()));
      System.out.println("Hvad get giver: " + db.getNavn());
    }

[DbFunk]
Metoden den kalder i den anden klasse:
  public String setNavn(String h){
    String hent = h;
    String sqlTxt = "SELECT navn FROM person WHERE login = \'" + hent+ "\';";
    System.out.println("Søgestrengen: " + sqlTxt + " giver følgende retur:" + "\n");
    try{
      ResultSet rs = stm.executeQuery(sqlTxt);
      while(rs.next())
      {
      System.out.println("Fra basen: "+rs.getString("navn"));
    System.out.println("Fra dbFunk: "+ h);
      h = rs.getString("navn");
      }
    }
    catch(SQLException e){
      System.out.println("Databasefejl ved hent:"+e);
    }
    return h;
  }

Det der undrer mig er, at jeg, når jeg i databasen forsøger at sende en string tilbage til GUI'en:

  public String getNavn(){
    return h;
  }

får jeg null-værdi tilbage (hvilket også fanges i kaldet fra GUI-klassen.

Er der en god forklaring på dette (det er der vel...) - da jeg gerne vil slippe for at skulle binde mig til både at sende og modtage en string i samme metode. Det undrer mig bare, at den String h, som jeg i øvrigt har erklæret public, er null udenfor metoden?
Avatar billede rogeer17 Nybegynder
13. december 2002 - 03:18 #1
Har det noget at sige, at min GUI-klasse er en applet?
Avatar billede Slettet bruger
13. december 2002 - 04:34 #2
Skal det ikke være return hent
Avatar billede arne_v Ekspert
13. december 2002 - 06:51 #3
public String setNavn(String h){
...
    return h;

Sætter ikke en variabel i klassen, fordi h i
argument-listen overrider.

hent kan heller ikke bruges, da det er en lokal variabel i
setNavn.

public class EtEllerAndet {

  private String navn = null; // <----

  public String setNavn(String h){
    String hent = h;
    String sqlTxt = "SELECT navn FROM person WHERE login = \'" + hent+ "\';";
    System.out.println("Søgestrengen: " + sqlTxt + " giver følgende retur:" + "\n");
    try{
      ResultSet rs = stm.executeQuery(sqlTxt);
      while(rs.next())
      {
      System.out.println("Fra basen: "+rs.getString("navn"));
    System.out.println("Fra dbFunk: "+ h);
      navn = rs.getString("navn"); // <----
      }
    }
    catch(SQLException e){
      System.out.println("Databasefejl ved hent:"+e);
    }
    return navn;
  }

  public String getNavn(){
    return navn;
  }
}
Avatar billede rogeer17 Nybegynder
14. december 2002 - 14:13 #4
Takker, det var det med override jeg havde svedt ud.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester