[C#] MySQL Ergebnis einer ganzen Zeile in ein array schreiben

RealMarkus

Grünschnabel
Hallo liebe Community,

ich verwende zum kontaktieren meiner Datenbank die OleDB funktionen. Ich habe eine funktion die alle Reihen einer Tabelle durchgeht und von jeder eine bestimmte Spalte ausliest und in ein array speichert, diese funktion funktioniert auch sehr gut, ich habe sie unten gepostet!

Nun möchte ich aber noch eine funktion, der man sagen muss welche Zeile aus einer datenbank sie komplett auslesen soll. Zum beispiel gibt man an MySQLQueryMakeArrayOf (Query)

dann deklariert man im code z.B. string[] userdata = MySQLQueryMakeArrayOf ("SELECT * FROM `users` WHERE `ID` = '1'")

Nun soll man mit userdata[Password] das Passwort des Users ausgeben können, oder userdata[Username] den usernamen, da ja alles über den User mit der ID 1 in das Array geschoben werden soll und so ansprechbar sein soll.

Ist das überhaupt möglich?

Hier die funktion die ich oben genannt habe:
Code:
internal string[] RunMySQLQuery(string TheQuery, string ColumnName)
        {
            try
            {
                //string TempData = "";
                System.Collections.ArrayList TmpArray = new System.Collections.ArrayList();
                MySQL_Command = new System.Data.OleDb.OleDbCommand(TheQuery, MySQL_Connector);
                MySQL_Data_Reader = MySQL_Command.ExecuteReader();
                while (MySQL_Data_Reader.Read())
                    TmpArray.Add(MySQL_Data_Reader[ColumnName].ToString());
                MySQL_Data_Reader.Close();
                return (string[])TmpArray.ToArray(typeof(string));
            }
            catch (System.Data.OleDb.OleDbException ex)
            {
                return new string[10];
            }
            finally
            {
                MySQL_Data_Reader.Close();
            }
        }
 
Hohoho ;-)

Du kannst auf ein Array nur über die Indizes zugreifen. Das, was du suchst, ist eine KeyedCollection (Hashtable/Dictionary), irgendwas, was KeyValuePairs verwaltet.

Wenn du deine Abfrage gegen die Datenbank feuerst musst du in der Funktion, welche die Daten in die KeyedCollection schreibt, den Namen der Spalte und den Wert der Methode Add übergeben -> MeineCollection.Add('Spaltenname', 'Wert der Spalte').

Jetzt kannst du über MeineCollection["Key"] den Wert ausgeben lassen
 
ah hmm also ich dachte über eine solche funktion nach, weil es sicher länger dauern würde die querys einzeln auszuführen, wie seht ihr das denn?

Soll ich jede spalte der userdaten einzeln deklarieren oder eine solche KeyedCollection verwenden? Könnte mir dann jemand meine gepostete funktion so ändern, dass sie das array richtig erstellt + einer guten keyedcollection klasse
 

Neue Beiträge

Zurück