MySQL Wie kann ich in Java Datensätze aus einer MySQL Datenbank gezielt in einzelne Arrays schreiben?

Flou1988

Mitglied
Hey Leute ich habe ein PHP Script, dass die Spalten zielg, ziels zielp usw. nach einer where Bedingung selektiert. Diese werden weiter unten einzeln über Arrays abgefragt und später wieder einzeln über eine for schleife in eine weitere Tabelle in der Datenbank über eine where Bedingung geupdatet.


Das gleiche benötige ich für ein Java Programm. Allerdings finde ich keinen geeigneten Ansatz.
Ich habe das Internet schon durchforstet und in diversen Büchern danach gesucht. Die Erklärungen zu Arrays sind ziemlich primitiv und reichen mir für das Vorhaben nicht aus.


----------------------------------------JavaLösungsansatz---------------------------------------- Folgendes habe ich bereits in Java. Verbindung zum Datenbankserver

.
.
.

try {
conn = DriverManager.getConnection(connectURL, user, pw);
Statement stmt = conn.createStatement();


String ankunft = "select zielg, ziels, zielp, Tran, RS from flt where aktion = 'stat' && Tran = 1";
ResultSet resultf1 = stmt.executeQuery(ankunft);

Ich schaffe es zwar alle Zeilen einer Spalte auszugeben, ich benötige aber nur bestimmte Spaltenwerte einer bestimmten Zeile. Also einzelne Datensätze dich ich über test[0] und test[1] usw. abfragen kann.

stmt.close();
.
.
.

---------------------------------phpLösung--------------------------------------------------------

//Datenbanksätze selektieren

$fl="select zielg, ziels, zielp, Tran, RS from flt where aktion = 'stat' && Tran = 1 ";
$res4= mysqli_query($mysqli, $fl);

//Datenbanksätze in Array schreiben

$list = array();
while ($row = mysqli_fetch_assoc($res4)) {
$list[] = $row;
}

// Anzahl Reihen bestimmen und in Variable für for Schleife schreiben
$iz= mysqli_num_rows($res4);
$izb=$iz-1;


//Datensätze gezielt über Arrays auswählen
echo "</br>";
echo $list[0]['zielg'], ":", $list[0]['ziels'], ":", $list[0]['zielp'], ":", $list[0]['RS'];;
echo "</br>";
echo $list[1]['zielg'], ":", $list[1]['ziels'], ":", $list[1]['zielp'], ":", $list[1]['RS'];;


//Daten mit For Schleife in Datenbank updaten

for ($i=0; $i<=$izb; $i++)
{

$comres2="update Plan set Verm = Verm + '".$list[$i]['RS']."' where Ga ='".$list[$i]["zielg"]."' && So='".$list[$i]["ziels"]."' && Plan='".$list[$i]["zielp"]."' ";
$res123= mysqli_query($mysqli, $comres2);


}
Ich hoffe mir kann der ein oder andere von euch helfen.
 
Auch wenn es in PHP schon ganz schlechter Stil ist was Du da machst, kannst du es in JAva doch 1:1 genauso machen.

Aber: Wenn Du nur bestimmte Zeilen benötigst, dann solltest du auch nur diese in der Datenbank abfragen. Das vereinfacht den Code auch drastisch...
 
danke erstmal für die antwort.
1. was wäre denn ein besserer Stil? Ich habs nicht anders gelernt und freue mich auf Verbesserung.
2. aber.. du schreibst, ich soll nur die daten, die ich benötige in der Datenbank abfragen.
In diesem Fall benötige ich aktion = stat && tran=1
diese abfrage liefert mir genau die datensätze die ich benötige müssen aber
eben weiterverarbeitet werden. eine weitere einschränkung ist eigtl nicht notwendig.
 
Dann brauchst du die daten ja auch nicht erst in ein array kopieren sondern kannst sie in der fetch schleife direkt verarbeiten..
 
Was hindert dich denn daran es so zu machen?

Code:
while ($row = mysqli_fetch_assoc($res4)) 
{
    $comres2="update Plan set Verm = Verm + '".$row['RS']."' where Ga ='".$row["zielg"]."' && So='".$row["ziels"]."' && Plan='".$row["zielp"]."' ";
    $res123= mysqli_query($mysqli, $comres2); 
}
 
Ok da muss ich dir recht geben. Das sollte zum gleichen ergebnis fuehren und weniger aufwand. Wenn du mir das selbe in java hinkriegst dann haette ich die optimale loesung.
 
Du must einfach nur durch dein resultset iterieren.

Code:
while(resultset.hesNext()) ...
    Result r = resultset.next();
 
ok danke. ich habe jetzt zum thema iterieren nochmal einiges gelesen, aber leider
bin ich noch nicht schlauer geworden. Wie kann ich denn dann die einzelnen Werte daraus abfragen
und in die Datenbankabfrage zum updaten einbinden.
ich werde aus den unterschiedlichsten beispielen und erklärungen die ich im internet finde einfach nicht schlauer.
 
Java:
        try(ResultSet rsRead = stmt.executeQuery("...")) {
            while (rsRead.next()) {
                int intValueColumnId = rsRead.getInt("id");
                String stringValueColumn1 = rsRead.getString(1);
                ...
            }
        }
Was du jetzt mit den Werten machst, bleibt dir überlassen.Du solltest auf jeden Fall aber erst neue Abfragen starten, wenn du die aktuelle abgearbeitet hast. Je nach Datenbanktreiber kannst du sonst Probleme kriegen.
Falls du Wert darauf legst, deine gesamte Tabelle - wozu auch immer - komplett im Speicher zu halten, solltest du die Daten in ArrayList<ArrayList> speichern, da bleibst du flexibler und bist auch nicht wirklich langsamer als mit Arrays.
 

Zurück
Oben