Avatar billede louise&patricia Nybegynder
15. december 2001 - 13:01 Der er 15 kommentarer og
1 løsning

Hjælp med compilerfejl

Hejsa er der ikke nogle der kan hjælpe os med at løse et lille problem. Vi kan ikke kompile følgende kode. Hvis vi sletter password så melder den bare fejl i en af de andre strings. Hvis I kan hjælpe os vil vi blive rigtig glade :o) Den skriver:

testOpretBruger.java:18: cannot resolve symbol
symbol  : variable Funktionskomponent
location: class testOpretBruger
        Funktionskomponent.opretbruger(fornavn, efternavn, gade, postnr, bynavn,
tlf, password);
        ^
1 error
public class testOpretBruger {
   
//bruges til at test metoden opretbruger i funktionskomponenten
   
   
public void test(){
   
   
    //testscenarie 1
    String fornavn = new String(\"\");
    String efternavn = new String(\"Jensen\");   
    String gade = new String(\"Ågade 8\");
    String postnr = new String(\"9000\");
    String bynavn = new String(\"Aalborg\");
    String tlf = new String(\"55555555\");
    String email = new String(\"jensen@email.dk\");
    String password = new String(\"nuser\");
    Funktionskomponent.opretbruger(fornavn, efternavn, gade, postnr, bynavn, tlf, email, password);
Avatar billede louise&patricia Nybegynder
15. december 2001 - 13:02 #1
Her er metoden der kalder testOpretBruger:

public static boolean opretbruger(String fornavn, String efternavn, String gade, String postnr, String bynavn, String tlf, String email, String password)
    {
    boolean ok = true;
   
    // kontrollerer at alle parametrene på nær email har fået assignet en værdi
    if (fornavn.equals(\"\")){
        ok = false;
        System.out.println(\"Intet fornavn\");}
    else {    if (efternavn.equals(\"\")){
                ok = false;
                System.out.println(\"Intet efternavn\");}
            else {    if (gade.equals(\"\")){
                        ok = false;
                        System.out.println(\"Ingen gade\");}
                    else {    if (postnr.equals(\"\")){
                                ok = false;
                                System.out.println(\"Intet postnr\");}
                            else {    if (bynavn.equals(\"\")){
                                        ok = false;
                                        System.out.println(\"Intet bynavn\");}
                                    else {    if (tlf.equals(\"\")){
                                                ok = false;
                                                System.out.println(\"Intet tlf.nr\");}
                                            else {    if (password.equals(\"\")){
                                                                ok = false;
                                                                System.out.println(\"intet password\");}
                                                            else    {
                                                                ok = true;
                                                            }}}}}}}
                                                           
       
    // kotrollerer om tlf ligger inden for ]10000000;100000000[
    int nummer = Integer.parseInt(tlf);
    if (nummer > 10000000){
        if (nummer < 100000000){
            ok = true;}
        else {
            ok = false;
            System.out.println(\"tlf.nr ugyldigt\");}}
    else {
        ok = false;
        System.out.println(\"tlf.nr ugyldigt\");}
Avatar billede erikjacobsen Ekspert
15. december 2001 - 13:08 #2
Du mangler bare at kalde med email feltet også
Avatar billede greybeard Nybegynder
15. december 2001 - 13:12 #3
Kompileren tror at Funktionskomponent er en variabel.
Da I bruger den til at kalde en static metode, er det formentlig en klasse.
Hvis den ligger i en package, skal I importere den package
Avatar billede louise&patricia Nybegynder
15. december 2001 - 13:23 #4
Greybeard>> Hvordan gør vi det, om vi må spørge?
Avatar billede greybeard Nybegynder
15. december 2001 - 13:26 #5
Kunne I vise Funktionskomponent. Hele klassen.
Avatar billede louise&patricia Nybegynder
15. december 2001 - 13:32 #6
Her er den så:-) Håber at det kan hjælpe.


/**Her importeres de java biblioteker der skal bruges*/
import java.sql.*;

public class Funktionskomponent {

  public static boolean userOk(String brugernavn, String password)
  {
    boolean result = false;

    try {
      /**Loader driverfilen til MySQL*/
      Class.forName(\"org.gjt.mm.mysql.Driver\");

      /** Definerer hvor databasen ligger og de nødvendige oplysninger til at logge på*/
      String sourceURL = \"jdbc:mysql://vale.netimage.dk:3306/e1202\";
      String user = \"e1202\";
      String DBpassword = \"e1202\";

      /**Opretter en forbindelse til databasen ved hjælp af DriverManager*/
      Connection databaseConnection = DriverManager.getConnection(sourceURL, user, DBpassword);
      Statement statement          = databaseConnection.createStatement();

      /**Definere hvilke data der skal forespørges på med executeQuery*/
      ResultSet brugerNavne = statement.executeQuery(\"SELECT * FROM medarbejdere WHERE email LIKE \'\" + brugernavn + \"\' AND password LIKE \'\" + password + \"\'\");

      result = brugerNavne.next();

      /**lukker forbindelsen*/
      databaseConnection.close();
    }
    catch (ClassNotFoundException cnfe) {
      System.err.println(cnfe);
    }
    catch (SQLException sqle) {
      System.err.println(sqle);
    }

    return result;
  }

  public static boolean soegtlfnr(String tlf)
  {
    boolean result = false;

    try {
      /**Loader driverfilen til MySQL*/
      Class.forName(\"org.gjt.mm.mysql.Driver\");

      /**Definerer hvor databasen ligger og de nødvendige oplysninger til at logge på*/
      String sourceURL = \"jdbc:mysql://vale.netimage.dk:3306/e1202\";
      String user = \"e1202\";
      String DBpassword = \"e1202\";

      /**Opretter en forbindelse til databasen ved hjælp af DriverManager*/
      Connection databaseConnection = DriverManager.getConnection(sourceURL, user, DBpassword);
      Statement statement          = databaseConnection.createStatement();

      /**Definere hvilke data der skal forespørges på med executeQuery*/
      ResultSet SoegPerson = statement.executeQuery(\"SELECT * FROM medlemmer WHERE tlf LIKE \'\" + tlf + \"\'\");

      result = SoegPerson.next();

      /**lukker forbindelsen*/
      databaseConnection.close();
    }
    catch (ClassNotFoundException cnfe) {
      System.err.println(cnfe);
    }
    catch (SQLException sqle) {
      System.err.println(sqle);
    }

    return result;
  }

  public static boolean soegemail(String email)
  {
    boolean result = false;

    try {
      /**Loader driverfilen til MySQL*/
      Class.forName(\"org.gjt.mm.mysql.Driver\");

      /**Definerer hvor databasen ligger og de nødvendige oplysninger til at logge på*/
      String sourceURL = \"jdbc:mysql://vale.netimage.dk:3306/e1202\";
      String user = \"e1202\";
      String DBpassword = \"e1202\";

      /**Opretter en forbindelse til databasen ved hjælp af DriverManager*/
      Connection databaseConnection = DriverManager.getConnection(sourceURL, user, DBpassword);
      Statement statement          = databaseConnection.createStatement();

      /**Definere hvilke data der skal forespørges på med executeQuery*/
      ResultSet SoegPerson = statement.executeQuery(\"SELECT * FROM medlemmer WHERE email LIKE \'\" + email + \"\'\");

      result = SoegPerson.next();
      /**Lukker forbindelsen*/
      databaseConnection.close();
    }
    catch (ClassNotFoundException cnfe) {
      System.err.println(cnfe);
    }
    catch (SQLException sqle) {
      System.err.println(sqle);
    }

    return result;
  }

  public boolean opretbruger(String fornavn, String efternavn, String gade, String postnr, String bynavn, String tlf, String email, String password)
    {
    boolean ok = true;
   
    // kontrollerer at alle parametrene på nær email har fået assignet en værdi
    if (fornavn.equals(\"\")){
        ok = false;
        System.out.println(\"Intet fornavn\");}
    else {    if (efternavn.equals(\"\")){
                ok = false;
                System.out.println(\"Intet efternavn\");}
            else {    if (gade.equals(\"\")){
                        ok = false;
                        System.out.println(\"Ingen gade\");}
                    else {    if (postnr.equals(\"\")){
                                ok = false;
                                System.out.println(\"Intet postnr\");}
                            else {    if (bynavn.equals(\"\")){
                                        ok = false;
                                        System.out.println(\"Intet bynavn\");}
                                    else {    if (tlf.equals(\"\")){
                                                ok = false;
                                                System.out.println(\"Intet tlf.nr\");}
                                            else {    if (password.equals(\"\")){
                                                                ok = false;
                                                                System.out.println(\"intet password\");}
                                                            else    {
                                                                ok = true;
                                                            }}}}}}}
                                                           
       
    // kotrollerer om tlf ligger inden for ]10000000;100000000[
    int nummer = Integer.parseInt(tlf);
    if (nummer > 10000000){
        if (nummer < 100000000){
            ok = true;}
        else {
            ok = false;
            System.out.println(\"tlf.nr ugyldigt\");}}
    else {
        ok = false;
        System.out.println(\"tlf.nr ugyldigt\");}
   
   
   
   
    boolean result = false;
   
    try {
      /* Loader driverfilen til MySQL**/
      Class.forName(\"org.gjt.mm.mysql.Driver\");

      // Definerer hvor databasen ligger og de nødvendige oplysninger til at logge på
      String sourceURL = \"jdbc:mysql://vale.netimage.dk:3306/e1202\";
      String user = \"e1202\";
      String DBpassword = \"e1202\";

      // Opretter en forbindelse til databasen ved hjælp af DriverManager
      Connection databaseConnection = DriverManager.getConnection(sourceURL, user, DBpassword);
      Statement statement          = databaseConnection.createStatement();

      // laver tlf om til en string og kontrollerer om tlf allerede eksisterer i databasen
      ResultSet Soegtlf = statement.executeQuery(\"SELECT * FROM medlemmer WHERE tlf LIKE \'tlf\'\");
      result = Soegtlf.next();
   
      if (result = true){
          System.out.println(\"Tlfnr eksisterer allerede\");
              ok = false;}
      else {
          ok = true;}
     
      //Definerer hvilke data der skal forespørges på med executeQuery
      if (ok = true){
      statement.executeUpdate(\"INSERT INTO medlemmer (fornavn, efternavn, gade, postnr, bynavn, tlf, email, password)\" +
                                                      \"VALUES (\'\" + fornavn + \"\', \'\" + efternavn + \"\', \'\" + gade + \"\', \'\" + postnr + \"\', \'\" + bynavn + \"\', \'\" + tlf + \"\', \'\" + email + \"\', \'\" + password + \"\')\");}
      else {
          System.out.println(\"bruger ikke oprettet\");}
     
      // lukker forbindelsen
      databaseConnection.close();
    }
    catch (ClassNotFoundException cnfe) {
      System.err.println(cnfe);
    }
    catch (SQLException sqle) {
      System.err.println(sqle);
    }
    return result;
    }

  public static boolean opretres(String dato, String periode, String bane1, String bane2)
    {
    boolean result = false;
    try {
      /* Loader driverfilen til MySQL**/
      Class.forName(\"org.gjt.mm.mysql.Driver\");

      // Definerer hvor databasen ligger og de nødvendige oplysninger til at logge på
      String sourceURL = \"jdbc:mysql://vale.netimage.dk:3306/e1202\";
      String user = \"e1202\";
      String DBpassword = \"e1202\";

      // Opretter en forbindelse til databasen ved hjælp af DriverManager
      Connection databaseConnection = DriverManager.getConnection(sourceURL, user, DBpassword);
      Statement statement          = databaseConnection.createStatement();

      //Definere hvilke data der skal forespørges på med executeQuery
      statement.executeUpdate(\"INSERT INTO reservation (dato, periode, bane1, bane2)\" +
                                                      \"VALUES (\'\" + dato + \"\', \'\" + periode + \"\', \'\" + bane1 + \"\', \'\" + bane2 +\"\')\");

      // lukker forbindelsen
      databaseConnection.close();
    }
    catch (ClassNotFoundException cnfe) {
      System.err.println(cnfe);
    }
    catch (SQLException sqle) {
      System.err.println(sqle);
    }
    return result;
  }
}
Avatar billede louise&patricia Nybegynder
15. december 2001 - 13:33 #7
problemet er under opretbruger
Avatar billede greybeard Nybegynder
15. december 2001 - 13:45 #8
Der er noget galt her. I har postet to versioner af opretbruger(). I den ene udgave er den static, i den anden ikke.
Udskriften af fejlmeddelelsen mangler et parameter, men  i den metode I siger, har lavet kaldet, gør der ikke.

Har I flere udgaver blandet sammen eller.....
Avatar billede louise&patricia Nybegynder
15. december 2001 - 13:54 #9
Det er fordi vi har forsøgt at ændre den. opretbruger har været static i funktionskomponenten før. Men den siger stadig det samme.
Avatar billede erikjacobsen Ekspert
15. december 2001 - 13:58 #10
Har I stadig ikke email-feltet med i kaldet ?
Avatar billede greybeard Nybegynder
15. december 2001 - 14:02 #11
Hvordan kompilerer I? Er Funktionskomponent kompileret, og ligger .class filen sammen med de andre .class filer?

Der er ikke noget galt med kaldet, bare I sørger for at opretbruger er static og I får alle parametrene med
Avatar billede louise&patricia Nybegynder
15. december 2001 - 14:04 #12
jo jo... det står bare ikke i den kode du har modtaget. vi har ændret det. vi tror heller ikke at det er det der er problemet
Avatar billede greybeard Nybegynder
15. december 2001 - 14:08 #13
Erik:
Hvis parameteret havde været problemet ville fejlen have set nogenlunde såadan her ud:
testOpretBruger.java:18: opretbruger(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String) in Funktionskomponent cannot be applied to (java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)
        Funktionskomponent.opretbruger(fornavn, efternavn, gade, postnr, bynavn, tlf,  password);
                              ^
Avatar billede louise&patricia Nybegynder
15. december 2001 - 14:12 #14
Vores filer ligger alle i samme bibliotek og funtionskomponenten er kompilet!
Avatar billede greybeard Nybegynder
15. december 2001 - 14:17 #15
?????
Det fungerer her
Avatar billede greybeard Nybegynder
15. december 2001 - 14:25 #16
Hvis I har noget vigtigt i den DB, kan det da godt være I skal ændre password, da det nu er offentliggjort:-)
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