1. Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

public Location ?

Dieses Thema im Forum "Programmierung" wurde erstellt von Nexus15, 13. März 2013.


  1. Nexus15
    Offline

    Nexus15 Kuhfänger

    Registriert seit:
    30. September 2012
    Beiträge:
    89
    Ich habe wiedermal ein kleines Problem ...
    Code (Text):
    1. public  Location getVectorLeft(String pn, World w) throws SQLException {
    2.         Statement stmt = null;
    3.         ResultSet rs = null;
    4.         Connection con = DriverManager.getConnection(url, user, pass);
    5.         stmt = con.createStatement();
    6.         rs = stmt.executeQuery("SELECT x, y, z FROM users WHERE name='"+pn+"';");
    7.         while(rs.next()) {
    8.             double x = rs.getDouble(1);
    9.             double y = rs.getDouble(2);
    10.             double z = rs.getDouble(3);
    11.             Location loc = new Location(w,x,y,z); // Diese Location möchte ich zurückgeben...
    12.            
    13.         }
    14.         return loc; // Variable loc ist nicht Verfügbar, da sie nur "local" ist, dass möchte ich ändern !
    15.        
    16.     }
     
  2. Cabraca
    Offline

    Cabraca Guest

    Da müsste deine IDE schon alarm schlagen.
    Parameter w wird nirgendwo gesetzt und wenn das Ergebnis der SQL abfrage leer ist wird deine location gar nicht erst erstellt und die Funktion gibt null zurück.
     
  3. Hecke29
    Offline

    Hecke29 Guest

    Issich Übergabeparamter.
     
  4. Cabraca
    Offline

    Cabraca Guest

    Oh stimmt hab ich hier auf.m Handy nich gesehen
     
  5. Nexus15
    Offline

    Nexus15 Kuhfänger

    Registriert seit:
    30. September 2012
    Beiträge:
    89
    Das hilft mir nicht weiter :)
     
  6. Hecke29
    Offline

    Hecke29 Guest

    Das SQL-Statement gibt nach der CodeLogik ja eh immer nur ein Ergebnis zurück oder?
     
  7. Crafter6432
    Offline

    Crafter6432 Workaholic

    Registriert seit:
    22. Dezember 2011
    Beiträge:
    681
    Sind in der DB überhaupt doubels oder nur Ints?
     
  8. MrFlieder
    Offline

    MrFlieder Braumeister

    Registriert seit:
    30. Dezember 2011
    Beiträge:
    332
    Geschlecht:
    männlich
    Minecraft:
    MrFlieder
    Um zum eigentlichen Problem zurückzukehren:
    Du legst Location loc in der while-Schleife an, deshalb kannst du darauf nicht außerhalb dieser Schleife zugreifen.

    Du musst zuerst die Location loc deklarieren und erst dann in der while-Schleife initialisieren:
    Code (Text):
    1.  
    2. Location loc = null;
    3. while(true)
    4. {
    5. loc = new Location(world, x, y, z);
    6. }
    7. return loc;
    8.  
     
  9. Hecke29
    Offline

    Hecke29 Guest

    Ich hab keine Ahnung von Java, aber wenn eh nur ein Ergebnis kommt, geht dann nicht auch das hier:
    Code (Text):
    1.  
    2. [..]
    3.         rs = stmt.executeQuery("SELECT x, y, z FROM users WHERE name='"+pn+"' LIMIT 1;");
    4.         rs.next()
    5.         double x = rs.getDouble(1);
    6.         double y = rs.getDouble(2);
    7.         double z = rs.getDouble(3);
    8.         return new Location(w,x,y,z);
    9. [..]
    10.  
     
  10. Crafter6432
    Offline

    Crafter6432 Workaholic

    Registriert seit:
    22. Dezember 2011
    Beiträge:
    681

    Ja, allerdings sollte man vorher mit if(rs.net()) prüfen ob ein Wert zurück geben wurde.