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.
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)
Mit ExecuteReader bekomm ich nur "System.Data.SqlClient.SqlDataReader" zurück...
Wenn ich nicht hier bin, findest du mich auf code-bude.net.
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
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.
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
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.
Du musst da nicht zwingend einen Namen angeben.
Es geht auch über den Index.
myDataReader[0].ToString() müsste also auch das Ergebnis liefern.
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.