wie eigentlich schon der Titel sagt suche ich nach Hilfe, um mit Werte aus einer Datenbank für eine berechnung in java zu integrieren.
Ich habe bereits in mysql eine datenbank angelegt, mit entsprechenden tabellen. Jetzt müsste ich Werte aus der Datenbank holen um berechnungen durchzuführen.
Wie z.B. :
In der Tabelle sind Werte wie Artikelnummer, Preis, gewicht, menge etc drin. Meine Absicht ist z.B. für die Artikelnummer 1234 gewicht für die angegebene menge zu berechnen und diesen dann in einer neuen Tabelle abzuspeichern. Eine Tabelle in java kann ich bereits abfragen und anzeigen, dafür nutze ich die result.next() Methode. Allerdings kann ich sie nur anzeigen lassen. Weiss aber nicht, wie ich dann die Werte nutzen kann.
Da ich ziemlich neu in Java Programmierung bin, wäre super, wenn ihr mir weiterhelfen würdet.
Täusch ich mich da, oder kann die Aufgabe komplett als SQL-Statement geschrieben werden? Ansonsten kannst du natürlich in Java über die Resultate iterieren, Infos sammeln und eine zweite Query absetzen.
Ich versteh nur nicht, wo dein Problem ist. Wie du sagst kannst du bereits Werte aus einem ResultSet auslesen. Da du dich schon mit SQL in Verbindung mit Java befasst, gehe ich davon aus, du hast bereits ein fundiertes Wissen über Variablen. Also wäre der logische Schritt ja dir die Werte aus dem ResultSet in temporäre Variablen zu speichern und diese für die Berechnung zu nutzen.
Die Klasse ResultSet verfügt über get-Methoden über die du deine Werte in Variablen beliebiger Datentypen speichern kannst. So kannst du z.B.
Java:
int value = resultset.getInt(Index);int value2 = resultset.getInt(Index);int result = value + value2;
Genau richtig, würde gern ein SQL-fähiges Java Programm erstellen. Das ist erstmal noch ein Bruchteil von dem Programm. Später brauche ich diese Werte, um weitere Berechnungen durchzuführen und mit anderen Werten zu vergleichen.
Danach habe ich die Idee das ganze in GUI darzustellen, also den Code in GUI einzubinden, so dass es für den Anwender praktisch einfacher einsehbarer ist. Das heisst also, wenn z.b. der Anwender eine Abfrage für einen bestimmten Wert benötigt, oder selbst ein wert eingibt um eine Berechnung durchzuführen. Ich hoffe ich konnte es etwas besser erklären.
Also die Werte sind eigentlich soweit gespeichert:
while (result.next()) {
int nummer_id = result.getInt("nummer_id"); // Alternativ: result.Int(1);
int teilenummer_id = result.getInt("teilenummer_id"); // Alternativ: result.getInt(2);
String bezeichnung = result.getString("bezeichnung");
int menge = result.getInt("menge");
Allerdings kann ich diese erstmal in einer test klasse nur ausgeben.
Ich denke statt System.out.println( nummer_id + " " + teilenummer_id + " " + bezeichnung + " " + menge); kann ich hier doch eine weitere Methode einfügen um die Berechnung zu machen oder?
Täusch ich mich da, oder kann die Aufgabe komplett als SQL-Statement geschrieben werden? Ansonsten kannst du natürlich in Java über die Resultate iterieren, Infos sammeln und eine zweite Query absetzen.
SELECT(SPALTE1 * SPALTE2)+(SPALTE3)AS ERGEBNISS FROM TABELLE;
Die Berechnung würde ich dann in eine neue Tabelle einfügen. Also kann ich vorher eine leere tabelle erstellen und die ergebnisse dort abspeichern und die Spalten als ergebnis1, ergebnis2 etc benennen oder?
Beispiel: Ich erzeuge die neue Tabelle mit dem Namen Tabelle1 mit den spalten ergebnis1, ergebnis2 etc., ist dann der code so richtig?
SQL:
SELECT(SPALTE1 * SPALTE2)+(SPALTE3)AS ergebnis1 FROM TABELLE1;
Ich galube nicht oder? Ich müsste die Tabelle wählen von der ich auch die Daten hole. Ich denke ich müsste dannach INSERT ausführen, um in die neue Tabelle einzufügen.
du brauchst keine neue Tabelle mit Insert, wie richtig als Hilfsmittel erkannt,
SELECT (SPALTE1 * SPALTE2) + (SPALTE3) AS ERGEBNISS FROM TABELLE;
wäre eine Abfrage die bestimmte berechnete Daten ins ResultSet liefert,
oder die normalen Spalten abfragen und in Java zusammenrechnen
in deinen Beispielen 10:47 + 10:49 gibt es nur die Menge als int, keinen Preis oder sonstwas,
da kann man nicht viel zu sagen, nichts ist zu berechnen
wenn es in verschiedenen Tabellen steht dann in SQL ein Join oder in Java die Daten zusammenbringen,
das sind alles gewisse Denk- und Programmieraufwände, nicht ganz leicht falls du bisher von allem Bahnhof verstehen solltest?
So ich habe die Werte aus ResultSet ausgelesen und die Berechnung damit ausgeführt. Allerdings habe ich eine while Schleife benutzt und habe die Bedingung gegeben
Java:
while(id<=20){}
, damit die Berechnung für jede id ausgerechnet werden soll, quasi für jedes Artikel einzeln. Allerdings besteht hier das Problem, dass ich 20mal die gleiche Ausgabe für die gleiche id habe und danach springt er erst zum nächsten. Ist hier die while Schleife nicht korrekt? Oder habe ich die Bedingung falsch eingegeben? Ich habs mit for auch versucht klappt irgendwie auch nicht.
weder ist dein konkretes Problem ersichtlich, noch warum eine Schleife bis 20 für 'Berechnung für jede id' nützlich ist
du musst mehr Code und Erklärungen liefern,
immer helfen auch Beispiele, 20 ist vielleicht etwas viel, aber nenne z.B. 5 fiktive Werteeinträge und was da einzeln, oder z.B. im 3er-Pack berechnet werden soll,
was passiert wenn die Schleife nicht da ist, was soll sich ändern
Jez habe ich eine weitere Frage. Wie kann ich die Daten die in Java berechnet sind wieder in die Datenbank einfügen?
Ich glaube ich habe es mir auch etwas kompliziert gemacht denke ich, ich glaube das ganze direkt in SQL zu schreiben wäre etwas einfacher gewesen.
Also zurück zu meiner Frage. Die Spalten sind in der Datenbank eingefügt, allerdings fehlen die in Java gerechneten Werte noch.
Könnt ihr mir sagen wie ich das machen kann? Bzw. mit welcher Methode?
also ich habe bereits eine leere spalte in die Datenbank eingefügt, jetzt möchte ich nur noch die Werte, die ich in java berechnet habe, in die neue Spalte in der Datenbank einfügen, weill ich diese Werte immer wieder gebrauchen werde.