Laden...

SQL Command Rückgabe

Erstellt von blutiger_anfänger vor 15 Jahren Letzter Beitrag vor 15 Jahren 2.153 Views
B
blutiger_anfänger Themenstarter:in
293 Beiträge seit 2008
vor 15 Jahren
SQL Command Rückgabe

verwendetes Datenbanksystem: MSSQL

Hallo,
ich führe hiermit eine Query aus. Jedoch möchte ich mehr als nur eine Zeile zurückgegeben bekommen! Was muss ich da statt "ExecuteScaler()" nehmen?

 string strConn = "server=StrServer; user=sa; pwd=StrPW; ";
            string comand = StrCommand;

            SqlConnection conn = new SqlConnection(strConn);
            SqlCommand cmd = new SqlCommand(comand, conn);
            conn.Open();
            textBox1.Text = Convert.ToString(cmd.ExecuteScalar());
            
            
            conn.Close();

liebe Grüße,
ein blutiger Anfänger

Wenn ich nicht hier bin, findest du mich auf code-bude.net.

3.511 Beiträge seit 2005
vor 15 Jahren

ExecuteReader();

Es gibt im 🛈 eine gute Übersicht über Datenbanken in .NET

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

B
blutiger_anfänger Themenstarter:in
293 Beiträge seit 2008
vor 15 Jahren

Mit ExecuteReader bekomm ich nur "System.Data.SqlClient.SqlDataReader" zurück...

Wenn ich nicht hier bin, findest du mich auf code-bude.net.

3.430 Beiträge seit 2007
vor 15 Jahren

Hi,

Mit ExecuteReader bekomm ich nur "System.Data.SqlClient.SqlDataReader" zurück...

ja, das ist ja genau das was du brauchst.

Mit dem SqlDataReader kannst du das Resultat zeilenweise abrufen.
Hier findest du ein Beispiel: http://www.developerfusion.co.uk/show/4278/2/

weiters könntest du auch den SqlDataAdapter nehmen.
Mit diesem kannst du das Resultat direkt in eine DataTable bzw. DataSet schreiben.
Hier findest du ein Beispiel: http://www.java2s.com/Code/ASP/ADO.net-Database/GetdataindatabasethroughSqlDataAdapterC.htm

Gruss
Michael

B
blutiger_anfänger Themenstarter:in
293 Beiträge seit 2008
vor 15 Jahren

danke für die Links, habe mir das alles mal durchgelesen, aber irgendwie haperts dennoch...

         string strConn = "server=StrServer; user=sa; pwd=StrPW; ";
            string comand = StrCommand;

            SqlConnection conn = new SqlConnection(strConn);
            SqlCommand cmd = new SqlCommand(comand, conn);
            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                textBox1.AppendText(dr.ToString());
            }
            

            dr.Close();
            conn.Close();

nun siehts so aus, aber ich bekomme nciht wie bei ExecuteScalar ein brauchbares Result zurück sondern wie schon gesagt nur x-mal "System.Data.SqlClient.SqlDataReader" in meine Textbox geschrieben...

Wenn ich nicht hier bin, findest du mich auf code-bude.net.

3.430 Beiträge seit 2007
vor 15 Jahren

HI,

der Rückgabewert besteht normalerweise in Form von einer Tabelle.
Du bekommst beim DataReader das Ergebnis zeile für Zeile zurück.
Dabei hat jede Zeile mehrere Felder. Und wenn du dann nur .ToString() aufrufst, dann kriegst du nichts brauchbares zurück.

Deshalb musst du mit myDataReader["spaltenname"].ToString() das Feld rausholen.

Willst du also immer nur den Wert der Spalte "Hallo" haben, so kannst du das so machen:

myDataReader["Hallo"].ToString();

Gruss
Michael

B
blutiger_anfänger Themenstarter:in
293 Beiträge seit 2008
vor 15 Jahren

hm habe in dem sinne keine tabellen... Soll ne Remote Konsole für meinen WindowsRemo werden.

 string strConn = "server=xx.xx.xx.xx; user=sa; pwd=passw0rd; ";
            string comand = @"xp_cmdshell ""dir c:\""";

            SqlConnection conn = new SqlConnection(strConn);
            SqlCommand cmd = new SqlCommand(comand, conn);
            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                textBox1.AppendText(dr.ToString());
            }
            

            dr.Close();
            conn.Close();

was soll ich in diesem beispiel denn als "Spalte" angeben?!

Wenn ich nicht hier bin, findest du mich auf code-bude.net.

3.430 Beiträge seit 2007
vor 15 Jahren

Du musst da nicht zwingend einen Namen angeben.
Es geht auch über den Index.

myDataReader[0].ToString() müsste also auch das Ergebnis liefern.

B
blutiger_anfänger Themenstarter:in
293 Beiträge seit 2008
vor 15 Jahren

danke dir - funktioniert super! Vielen dank für deine/eure Geduld mit mir 🙂

Wenn ich nicht hier bin, findest du mich auf code-bude.net.