Tach alle sammt,
Zu meinem Problem ich möchte aus einer MYSQL-Datenbank alle Werte einer Spalte auslesen allerdings klappt das nicht.
Ich lese jede Zeile einzeln aus und trage dann denn Wert in eine String ein. Dieser wird dann in eine Array Liste eingefügt welche die Methode dann zurückgibt.
Ich würde mich über eure Hilfe freuen.
Fehlercode:> Fehlermeldung:
System.IndexOutOfRangeException: Der Index war außerhalb des Arraybereichs.
bei MySql.Data.MySqlClient.Interceptors.ExceptionInter ceptor.Throw(Exception exception)
bei MySql.Data.MySqlClient.MySqlConnection.Throw(Excep tion ex)
bei MySql.Data.MySqlClient.MySqlDataReader.Throw(Excep tion ex)
bei MySql.Data.MySqlClient.MySqlDataReader.GetValue(In t32 i)
bei MySql.Data.MySqlClient.MySqlDataReader.get_Item(In t32 i)
bei Roboter.MYSQL.MYSQL_Vorhandene_Programme_abfragen. Vorhandene_Programme_abfragen() in C:\Users\Tino\Google Drive\Arbeit\Visual Studio dateien\Roboter\Roboter\MYSQL\MYSQL_Vorhandene_Pro gramme_abfragen.cs:Zeile 32.
Button der die Methode aufruft:
private void button_laden_Click(object sender, EventArgs e) {
try {
String[] Programme = MYSQL.MYSQL_Vorhandene_Programme_abfragen.Vorhande ne_Programme_abfragen();
Listedateien.Items.Clear();
Listedateien.Items.Add(Programme);
} catch {
MessageBox.Show("Fehler beim Laden der Dateien");
}
}
Meine Methode die das ganze ausführt:
public static String[] Vorhandene_Programme_abfragen() {
try {
MySqlConnection con = new MySqlConnection(Form1.MySQLConnectionString);
con.Open();
string Programme = $ "SELECT Programmname FROM Programme";
MySqlCommand com2 = new MySqlCommand(Programme, con);
MySqlDataReader reader = com2.ExecuteReader();
String[] Programme1 = new String[10];
for (int i = 0; i < 10; i++) {
reader.Read();
string Program = reader[i].ToString();
Programme1[i] = Program;
}
reader.Close();
return Programme1;
} catch (Exception ex) {
MessageBox.Show(ex.ToString());
}
return null;
}
Du verwendest den DataReader nicht korrekt. Du kannst als Index entweder die Ordnungszahl oder den Namen der Spalte übergeben:
reader[0]
oder
reader["Programmname"]
List<string> programme = new List<string>();
while (reader.Read())
{
programme.Add(reader["Programmname"].ToString();
}
Hallo
auch als Neuling darf man sich an [Hinweis] Wie poste ich richtig? halten.
Bitte Code Tags verwenden, wenn Du schon Hilfe erwartest 😉
Zudem könnte man eine bessere Bezeichnung für den Titel wählen...
Stell Dir vor das ganze Forum heisst "Problem mit xyz"...
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Auch sieht deine Verarbeitung beim auslesen sehr komisch aus.
Dein Code sieht nach einer Bastellösung für ein LIMIT 10.
Deine Verarbeitung würde z.B. knallen, wenn du weniger als 10 Einträge in der Tabelle hast.
Wenn du mehr hast, dann würdest du diese auch nicht mitlesen.
Am besten nimmst du eine while Schleife mit reader.Read() und als Container eine List<string>
Dann musst du auch nicht wissen, wieviele Einträge aktuell vonhanden sind, da der Reader dir alle liefert und die List<T> die immer per Add die Einträge gepusht bekommt.
Ebenfalls schließt du zwar deinen Reader aber nicht deine Connection.
Hier solltest du dir mal using anschauen.
Dazu natürlich auch mal IDisposable mit der Dispose Methode.
Auch solltest du deinen Code Stil an den allgemeinen Code Stil von C# annähern.
Methoden Namen werden dort nicht per _ getrennt, dass liest sich aus meiner Sicht immer furchtbar.
T-Virus
Developer, Developer, Developer, Developer....
99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
Hey,
du hast vollkommen recht das ganze ist eine Bastel Lösung. Ich bin ein absoluter Anfänger und freue mich das du mich auf meine Fehler aufmerksam machst jedoch hätte ich eine Frage bezüglich des Code Stils. Mir ist bewusst das meine Namen etc. nicht gerade schön sind aber was macht den C# Stil aus? Ich würde gerne so programmieren das es auch an den C# Stil angelehnt ist.
xp21xp
Keine Full Quotes
[Hinweis] Wie poste ich richtig?
Es gibt viel Dialekt in der C# Sprache, aber im Prinzip hält sich die Gemeinschaft an die Konventionen und Empfehlungen von Microsoft.
[Artikel] C#: Richtlinien für die Namensvergabe
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code