115122
Goto Top

C Sharp SQL Abfrage Problem

Hallo,

ich möchte in C# eine Verbindung zu einer DB/Tabelle herstellen, eine Abfrage starten und die Ergebnismenge darstellen. Das funktioniert auch soweit mit folgendem Code:

SqlConnection consql = new SqlConnection("user id=XXX; password=XXX; server=XXX;" +  
                    "database=XXX; connection timeout=5");  
                try
                {
                    consql.Open();

                    SqlCommand cmd = new SqlCommand("select id from tabelle", consql);  
                    cmd.ExecuteNonQuery();

                    SqlDataReader reader = cmd.ExecuteReader();
                    int zaehler = 0;

                    while (reader.Read())
                    {
                        this.lbID.Items.Add(reader["id"]);  
                        zaehler += 1;
                    }
                    MessageBox.Show("Anzahl der Datensätze: " + Convert.ToString(zaehler));  
                    reader.Close();

                    consql.Close();
                }
                catch (Exception)
                {
                    MessageBox.Show("SQL Server: Nicht erfolgreich.", "Test", MessageBoxButtons.OK);  
                }

Wenn ich nun auf die bestehende Ergebnismenge z.B. einen ORDER BY laufen lassen möchte, muss ich dann eine neue Select-Anweisung schreiben oder kann ich die ORDER BY-Anweisung irgendwie auf die Ergebnismenge anwenden ?

Und falls ich für jede solcher Anweisungen (sei es insert, update, delete, order by etc..) eine neue Select-Anweisung erstellen muss, wirkt sich das merklich auf die Performance aus ?

Grüße,
lordzwieback

Content-Key: 297323

Url: https://administrator.de/contentid/297323

Printed on: April 24, 2024 at 23:04 o'clock

Mitglied: 114757
114757 Feb 25, 2016 updated at 10:12:58 (UTC)
Goto Top
Moin,
lade deine Daten in ein Datatable Object dann kannst du es nach belieben sortieren/umsortieren ...
http://stackoverflow.com/questions/6073382/read-sql-table-into-c-sharp- ...
https://msdn.microsoft.com/de-de/library/zk13kdh0%28v=vs.71%29.aspx

Gruß jodel32
Mitglied: 115122
115122 Feb 25, 2016 at 10:24:17 (UTC)
Goto Top
Vielen Dank, ich werde mir das mal anschauen und ggf Rückmeldung geben.
Mitglied: 115122
115122 Feb 25, 2016 at 11:34:28 (UTC)
Goto Top
Ich verstehe so manches nicht. Code sieht momentan so aus:

DataTable dataTable = new DataTable();

                    SqlConnection consql = new SqlConnection("user id=XXX; password=XXX; server=XXX;" +  
                        "database=XXX; connection timeout=5");  
                    string query = "select id from tabelle";  

                    SqlCommand cmd = new SqlCommand(query, consql);
                    consql.Open();

                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    da.Fill(dataTable);

                    //HIER FEHLT DAS VERSTÄNDNIS

                    foreach (DataRow dRow in dataTable.Rows)
                    {
                        this.lbID.Items.Add(dRow["Rec_id"]);  
                    }

                    //Befehl ausführen
                    //SqlDataReader reader = cmd.ExecuteReader();
                    //int zaehler = 0;
                    ////Daten einlesen
                    //while (reader.Read())
                    //{
                    //    this.lbID.Items.Add(reader["id"]); 
                    //    zaehler += 1;
                    //}
                    //MessageBox.Show("Anzahl der Datensätze: " + Convert.ToString(zaehler)); 
                    //reader.Close();
                    // close database connection
                    consql.Close();
                    da.Dispose();
                }
                catch (Exception)
                {
                    MessageBox.Show("SQL Server: Nicht erfolgreich.", "Test", MessageBoxButtons.OK);  
                }


Ich verstehe nicht, wie ich auf den dataTable Inhalt zugreife bzw. wie ich z.B. eine "ORDER BY id desc" auf den dataTable anwende. Das Ausgeben in der foreach scheint mir richtig zu sein.