Zurückgeben eines Wertes aus einer void-Methode in Java
Habe ich eine Methode :
public void dbQuery(String query, String what) {
try {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
if(what.equals("temp_table")) {
String temporary_table = rs.getString("table_name_temp");
System.out.println(temporary_table);
return;
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
}
}
String query = "EXEC temptables.dbo.create_temp_cdr 'SIP'";
String temporary_table = db.dbQuery(query,"temp_table");
Wie bekomme ich die Rückkehr eines void
Anwendung in einem anderen db.dbQuery()
?
PS : ich brauche einen Wert aus dbQuery()
so kann ich den Bau eines weiteren query
zu nennen dbQuery()
wieder
- Die Rückgabe eine leere?
- Ich zeigte Ihnen, wie Sie es hier tun: stackoverflow.com/questions/10617128/...
- das ist einfach nur Chinesisch ... ich möchte es langsam angehen zu lassen
- Nein, es ist richtiger code. Lesen Sie es, vor allem die "map ()" - Methode. Es zeigt Ihnen, wie Sie laden ein ResultSet in ein Objekt in einer Allgemeinen Weise und gibt es zurück.
- ich bin nicht gut in java, so dass ich don t wissen, was Sie da getan haben, bedeutet ...
- So sehen wir uns. Du musst in der Lage sein zu Lesen, etwa zehn Zeilen code.
- Ich Lerne auch sehr schnell, aber nicht schnell .. ich kam von php .. so..
- Wenn du nicht bereit bist für diesen code, sollten Sie nicht selbst versuchen zu behandeln, Datenbank-verbindungen und dergleichen. Lernen Sie Java von Grund auf, in kleinen Schritten. Lernen Sie die Grundlagen der Sprache (wie die Methode Rückgabetypen).
- Es gibt keine Rückkehr aus der leere. [Ominösen Stimme]
- mit java muss alles hart sein, Mann .. Warum gibt es keine Klasse die Verbindung zu Datenbank und teilen den gleichen code für die Abfrage .. wie php ' s PDO .. was ist daran falsch ? Ich wollte eine Funktion, um alle Abfragen, aber scheint imposible oder sehr mega eta kompliziert ... geez
- Sie wissen nicht genug Java, um genau zu beurteilen was schwer und was nicht, fürchte ich. Ohne zu wissen, PHP, fände ich etwas zu tun in diesem schwer zu. Die Lösung ist nicht, sich zu beschweren über die Sprache - es ist, um es zu lernen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie entweder Ihre Methode nicht void, und Rückgabetyp hat, dann kannst du die Zeile
was wieder die temporary_table variable.
Andere Möglichkeit wäre die übergabe per Referenz an die Methode. Zum Beispiel, können Sie übergeben Sie ein StringBuilder-Objekt an die Methode. Alle änderungen dieses Objekts in der Methode wird dann auch nach der Methode zurückgegeben hat.
Aufruf dieser Methode
wäre die Ausgabe von:
Was meinst du mit "die Rückkehr der void"? Wenn du meinst, "der Rückgabewert" gibt es dann nicht - das ist der Punkt, der die Methode erklärt wird, wie
void
.Wenn Sie wollen, um einen Wert zurückzugeben, dann machen Sie es nicht eine void-Methode... gegeben:
sieht es aus wie Sie nur wollen, zu ändern
dbQuery
zurückString
. Beachten Sie, dass Sie brauchen, um herauszufinden, was zurück, wennwhat
nichttemp_table
. (Sollten Sie auch fix Ihre exception-handling - nur den Druck aus dem stack-trace auf stdout und dann weiter unabhängig ist fast nie der richtige Ansatz.)dbQuery()
so kann ich den Bau eines weiterenquery
zu nennendbQuery()
wiederfunction
und wird es wieder nichtsvoid
bedeutet, dass Sie nicht (und kann nicht) etwas zurückzugeben.String
. Wenn Sie nicht wissen, genug Java zu tun, das darf man sich aber nicht überall sein in der Nähe Datenbank-code...Können Sie nicht zurückgeben einen Wert aus einer Methode, die definiert ist als
void
- per definition bedeutet dies, dass es nicht wieder einen Wert hat.Wenn Sie sehen, ein
return;
- Anweisung in einemvoid
Methode, es im Grunde bedeutet, dass dies wird end-die aktuelle Methode und zurückgeben der Verarbeitung an den Aufrufer zurück.Ich würde deine Methode string anstelle von bool. Void wird nicht alles zurückzugeben, was immer.
Einer void-Methode ist etwas, das nichts zurück.
Aber, deine Anforderung scheint, dass Sie verwenden müssen Wert generiert, der diese Methode in die Vorherige Ebene.
Eine naheliegende Lösung dafür ist, ändern Sie den Rückgabetyp von void zu String.
Aber, wenn Sie nicht wollen, dies zu tun , übergeben Sie einfach eine weitere string-parameter Ihrer Methode. String ist ein Objekt, so, wenn Sie der übergabe an eine Methode, Sie sind tatsächlich vorbei Verweis auf das Objekt zu. Stellen Sie einfach Ihre generierten Wert in diesen string, und Sie werden in der Lage sein, um es in vorherigen layer mit, dass die string-variable(Es ist irgendwie ähnlich wie Pass by Reference in C).
Ich hoffe, dieser workaround wird Ihr problem lösen.
Bitte korrigieren Sie mich, wenn ich falsch bin.
In der Tat, er will etwas ähnliches wie Funktionen in VB oder so.
Erstellen Sie zuerst Ihre leere als üblich.
Also, wenn Sie wollen, um einen Integer-Wert zurückgeben, ersetzen Sie einfach die Leere mit Integer
und fügen Sie den Rückgabewert