Benutzer mit den meisten Antworten
Werte aus SQL-Datenbanktabelle in Textfelder einlesen

Frage
-
Hallo, ich hab ein GridView, welches mir die Werte in der Datenbank Zeilenweise anzeigt, jetzt möchte ich das wenn ich eine Zeile durch setzen des Häkchens am Anfang jeder Zeile die Werte nochmals bearbeiten kann. Mein Problem ist nur ich weiß nicht wie ich die Werte in Textfelder einlesen kann. Folgenden Code hab ich:
Programiersprache ist C#protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { String conStr = Tankstelle.Properties.Settings.Default.ConnString; SqlConnection myConn = new SqlConnection(); myConn.ConnectionString = conStr; myConn.Open(); int slctId = GridView1.SelectedIndex; string strqry = "SELECT (Datum, Kennzeichen, KmStand, Liter, PreisLiter, MwSt, Export) FROM DIESEL WHERE ID = '" + slctId + "' "; SqlCommand myCom = new SqlCommand(strqry, myConn); myCom.ExecuteNonQuery(); myConn.Close(); }
Antworten
-
Hallo Jens,
du rufst die Methode ExecuteNonQuery() auf, die für Update, Insert und Delete geeignet ist. In deinem Fall möchtest du ja Daten zurückbekommen. Da gibt es verschiedenen Ansätze. Die einfachsten sind mit a) DataReader und mit b) DataSet.
Mit einem DataReader sähe das ungefähr so aus:
...
SqlCommand myCom = new SqlCommand(strqry, myConn); DataReader dr = myCom.ExecuteReader(); while(dr.Read()) { textBox1.Text = dr["Datum"].ToString(); textBox2.Text = dr["Kennzeichen"].ToString(); //weitere Zuweisungen... } dr.Close();
...
Ich habe das jetzt nicht in Visual Studio ausprobiert. Grundsätzlich liegt dein Fehler darin, dass du das Ergebnis der SELECT-Abfrage nirgendwo entgegengenommen hast und daher auch nicht auf die Werte zugreifen kannst. Das mit dem DataReader klappt so übrigens nur bei einem zurückgegebenen Datensatz, da die TextBoxen in der Schleife ja sonst immer wieder überschrieben werden. Falls du mehrere Datensätze geliefert bekommst, solltest du ein DataSet nehmen.
Viele Grüße
Jan
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Dienstag, 31. August 2010 06:59
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 15. September 2010 15:26
-
Hallo Jens,
bzgl. "ASP.NET-Gruppe" ... die Bindungs-Techniken sind vor allem unterschiedlich in die einzelnen Technologien. Im Silverlight-Szenario würde man bspw. nicht das DataSet wählen etc..
Aber hier ggf. ein Artikel, der Dir Möglichkeiten dazu aufzeigen kann:[Editable Gridview with Textbox, CheckBox, Radio Button and DropDown List - CodeProject]
http://www.codeproject.com/KB/webforms/editable_gridview_control.aspx
Ich kann auch nur empfehlen, Bindungen zu benutzen.
ciao Frank- Als Antwort vorgeschlagen Robert BreitenhoferModerator Dienstag, 31. August 2010 06:59
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 15. September 2010 15:26
-
Hallo,
schau dir deine Select Abfrage nochmal an.
Du hast kein "from" darin stehen.
Das Programm weiß also gar nicht, von welcher Tabelle die Daten
kommen sollen. Richtig sollte das so aussehen:
string strqry = "SELECT (Datum, Kennzeichen, KmStand, Liter, PreisLiter, MwSt, Export) FROM Tabellenname WHERE ID = '" + slctId + "' ";
Gruß
Volker
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 15. September 2010 15:26
Alle Antworten
-
Hallo Jens,
du rufst die Methode ExecuteNonQuery() auf, die für Update, Insert und Delete geeignet ist. In deinem Fall möchtest du ja Daten zurückbekommen. Da gibt es verschiedenen Ansätze. Die einfachsten sind mit a) DataReader und mit b) DataSet.
Mit einem DataReader sähe das ungefähr so aus:
...
SqlCommand myCom = new SqlCommand(strqry, myConn); DataReader dr = myCom.ExecuteReader(); while(dr.Read()) { textBox1.Text = dr["Datum"].ToString(); textBox2.Text = dr["Kennzeichen"].ToString(); //weitere Zuweisungen... } dr.Close();
...
Ich habe das jetzt nicht in Visual Studio ausprobiert. Grundsätzlich liegt dein Fehler darin, dass du das Ergebnis der SELECT-Abfrage nirgendwo entgegengenommen hast und daher auch nicht auf die Werte zugreifen kannst. Das mit dem DataReader klappt so übrigens nur bei einem zurückgegebenen Datensatz, da die TextBoxen in der Schleife ja sonst immer wieder überschrieben werden. Falls du mehrere Datensätze geliefert bekommst, solltest du ein DataSet nehmen.
Viele Grüße
Jan
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Dienstag, 31. August 2010 06:59
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 15. September 2010 15:26
-
Hallo Jens,
bzgl. "ASP.NET-Gruppe" ... die Bindungs-Techniken sind vor allem unterschiedlich in die einzelnen Technologien. Im Silverlight-Szenario würde man bspw. nicht das DataSet wählen etc..
Aber hier ggf. ein Artikel, der Dir Möglichkeiten dazu aufzeigen kann:[Editable Gridview with Textbox, CheckBox, Radio Button and DropDown List - CodeProject]
http://www.codeproject.com/KB/webforms/editable_gridview_control.aspx
Ich kann auch nur empfehlen, Bindungen zu benutzen.
ciao Frank- Als Antwort vorgeschlagen Robert BreitenhoferModerator Dienstag, 31. August 2010 06:59
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 15. September 2010 15:26
-
Hallo, so Richtig will es noch nicht.Wenn ich in der Website auf "Auswählen" ( 1.Spalte im GridView ) klicke, dann bekomm ich die Fehlermeldung, das in der Zeile "SqlDataReader dr = myCom.ExecuteReader(); " in der Nähe von ";" ein Fehler ist.
int slctId = GridView1.SelectedIndex; string strConn = ConfigurationManager.ConnectionStrings["TankDBConnectionString"].ConnectionString; string strqry = "SELECT (Datum, Kennzeichen, KmStand, Liter, PreisLiter, MwSt, Export) WHERE ID = '" + slctId + "' "; SqlConnection myConn = new SqlConnection(strConn); myConn.Open(); SqlCommand myCom = new SqlCommand(strqry, myConn); SqlDataReader dr = myCom.ExecuteReader(); //HIER in der Nähe ist ein Fehler while (dr.Read()) { //Calendar1.SelectedDate = dr["Datum"].ToString(); DropDownList1.SelectedItem.Text = dr["Kennzeichen"].ToString(); //weitere Zuweisungen... } dr.Close(); myConn.Close();
Jens Wedekind -
Hallo,
schau dir deine Select Abfrage nochmal an.
Du hast kein "from" darin stehen.
Das Programm weiß also gar nicht, von welcher Tabelle die Daten
kommen sollen. Richtig sollte das so aussehen:
string strqry = "SELECT (Datum, Kennzeichen, KmStand, Liter, PreisLiter, MwSt, Export) FROM Tabellenname WHERE ID = '" + slctId + "' ";
Gruß
Volker
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 15. September 2010 15:26