verwendetes Datenbanksystem: MySQL
Hallo Zusammen,
auf gut Glück hier nochmal.
Ich habe jetzt mit 2 Leuten die Nacht rumgewälzt um herauszufinden wie dies funktionieren soll, es klappt einfach nicht!
Ich lese aus der Datenbank (MYSQL) folgendermaßen:
int[] auslesen = new int[30];
string query = "SELECT freundesid FROM freunde WHERE myID = "+ teminfo.Id;
MySql.Data.MysqlClient.MySqlDataReader r = sql_.executeQuery(query);
if (r == null)
{
return false;
}
while (r.Read())
{
auslesen[] = Convert.ToInt32(r.GetString(0));
}
Ausgabe ist dann folgendes: Er liest und liest und liest, bis die 30 stellen des INT Arrays belegt sind.
Das will ich jedoch nicht, die 30 soll flexibel erkannt werden - also sobald eine 0 als Zahl kommt, ist die Freundesliste fertig ausgelesen.
Mein Problem ist nun, dass hier bei 5 Freunden - 5 Zahlen und 25x 0 steht.
Wie kann ich dies denn Abfragen ich hab den Aufbau schon tausendmal umgebaut, ich komme wirklich nicht drauf.
Könnt Ihr mir hier helfen?
Vielen Dank und
Gruß Wolle
Don`t eat yellow snow 😉
Als erstes Frage ich mich wie das hier funktionieren soll:
auslesen[] = Convert.ToInt32(r.GetString(0));
Zu deiner Frage. Anstatt eines Arrays, nimm lieber eine List<int> da kannst du dann mit Add deine zahlen reinwerfen. du kannst das dann mit ToArray() in einen array konvertieren.
Gruß pdelvo
Genau das wollte ich auch schreiben^^...!
Mit List.add fügst du dann einfach was der Liste hinzu und kannst dann, wenn du nur 30 Freunde willst irgendwo, einfach nur die ersten 30 nehmen 😉
Gruß
nitro
Hallo ihr zwei,
danke für die Antwort!
Also der hat die zahlen schon genauso wie ich wollte in das Array geschrieben, das hat also funktioniert nur halt auch alle 0er ne.
Wie kann ich denn bei der List erkennen wann die erste 0 kommt und ab da nicht mehr weiter lassen?
Zweiteres, wie mach ich denn in einer Konsolenanwendung eine List?!
Es handelt sich hierbei um einen Server der keine GUI braucht, muss ich die Windows.Forms einfach hinzufügen (wäre ja nicht schlimm) und kann die List dann trotzdem normal nutzen?
Gruß Wolle
Don`t eat yellow snow 😉
Hallo wolle-,
Es handelt sich hierbei um einen Server der keine GUI braucht, muss ich die Windows.Forms einfach hinzufügen (wäre ja nicht schlimm) und kann die List dann trotzdem normal nutzen?
Bist Du sicher, dass wir von der gleichen "List" reden? Ich denke es ist diese hier gemeint: MSDN - System.Collections.Generic.List Klasse
Diese Liste ist selbstverständlich auch ohne WinForms nutzbar.
Grüße
Norman-Timo
A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”
sowas wie
if(r.GetString(0) == "0") {
// Diddy do it!
}
vielleicht?
Liste machst du mit
List<string> MyList = new List<string>();
hinzufügen kannst du da was mit
MyList.add(..);
Je nach deinem Datentyp halt...!
Die kannst du ganz normal nutzen...war das deine Frage?
Er liest und liest und liest, bis die 30 stellen des INT Arrays belegt sind.
Das will ich jedoch nicht, die 30 soll flexibel erkannt werden - also sobald eine 0 als Zahl kommt, ist die Freundesliste fertig ausgelesen.
Mein Problem ist nun, dass hier bei 5 Freunden - 5 Zahlen und 25x 0 steht.
Das ist eine Eigenheit des Arrays. Leere Felder werden zunächst mit einem Standardwert "befüllt". Bei int ist das halt 0, bei object etc. wäre es null. Was du suchst ist die generische Liste List<int>, wie hier auch schon erwähnt wurde.
/Edit:
Wie kann ich denn bei der List erkennen wann die erste 0 kommt und ab da nicht mehr weiter lassen?
Gar nicht. Es liegt ja nicht an deinem SQL-Result, dass dort 0 steht, sondern am Array an sich.
Vielen Dank,
das Erklärt einiges!
Es läuft - Super!!
Das freut mich jetzt aber 🙂))
Stimmt der Standartwert kommt aus dem Array - in der DB stehen ja garkeine 0en!! 👅 👍
Gruß Wolle
Don`t eat yellow snow 😉
SqlCommand cmd = new SqlCommand("SELECT freundesid FROM freunde WHERE myId=@myId", mySqlConnection);
cmd.Parameters.Add("@myId", System.Data.SqlDbType.NVarChar).Value = temInfo.Id;
List<int> result = null;
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader.HasRows)
{
result = new List<int>();
while (reader.Read())
{
result.Add(reader.GetInt32(reader.GetOrdinal("Freundesid"));
}
}
}
return result;
a) Parameter benutzen
b) List<int> benutzen, wie schon gesagt wurde
c) Liste einzeln füllen - wie schon gesagt wurde, kannst du das array so, wie du es machst, gar nicht füllen
LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
Hallo nochmal,
ich hab mich gerade mal durchs Forum und MSDN geschaut.
Was ich jedoch nicht finde ist, wie ich die List nacheinander einfach wieder ausgebe!?
in die List habe ich am Ende auch eine 0 eingetragen um jetzt eine Abfrage zu machen
Listbox ausgabe bis Item = 0.
Muss ich hier den Index wählen?
Danke und
Gruß Wolle
Don`t eat yellow snow 😉
//List<int> myList;
foreach(int listEntry in myList)
{
Console.WriteLine("Eintrag: {0}", listEntry);
}
[Hinweis] Wie poste ich richtig?, Punkt 1.1.1 beachten, bitte.
LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)