Hallo,
ich habe einen Gridview mit mehreren Zeilen. in jeder Zeile wird ein Formular gelistet. Klicke ich nun das jeweilige Formular an öffnet es sich und ich kann es bearbeiten.
Die Formular_ID aus der Datanbank wird aus dem Gridview übergeben und als Variable gespeichert.
Und so sieht mein Updatebutton bis jetzt aus:
protected void FormularUpdate(object sender, EventArgs e)
{
string FormularID = gwKundenliste.SelectedRow.Cells[8].Text.ToString();
Befehl.Connection = Verbindung;
Befehl.CommandText = "UPDATE formular SET Beschreibung =" + tbBeschreibungUD.Text.ToString() + ",Name=" + tbNameUD.Text.ToString() + ",Infofeld =" + tbInfofeldUD.Text.ToString() + "WHERE Formular_ID =" + FormularID;
Befehl.ExecuteNonQuery();
Befehl.CommandText = "UPDATE email SET email=" + tbEmailUD.Text.ToString() + ",Name=" + tbNameUD.Text.ToString() + "WHERE Formular_FK =" + FormularID;
Befehl.ExecuteNonQuery();
Soweit so gut. Nun habe ich in dem Bearbeitungsformular aber noch ein Gridview, in dem aber nur die Felder für das angeklickte Formular gelistet werden sollen. Mir ist klar dass ich eine WHERE-Bedingung (WHERE Formular_ID = FormuladID (Da ich es ja als Variable gespeichert habe)) einbauen muss, aber ich weiss nicht wo. Habe es über den Query Builder gemacht, also klickibunti.
Zum besseren Verständnis sind im Anhang noch Bilder.
Hallo,
dein Update-Code verlangt nach SQL-Injection 😉
Siehe [Artikelserie] Parameter von SQL Befehlen
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Danke für den Hinweis, ich werde mir das wohl mal genauer anschauen müssen 😃
Aber wie komme ich mit meinem Problem jetzt weiter?
Mal vom SQL-Injection abgesehen, Du solltest dringend Parameter verwenden!
Probiers mal mit
"UPDATE formular SET Beschreibung = '" + tbBeschreibungUD.Text.ToString() + "',Name='" + tbNameUD.Text.ToString() + "',Infofeld ='" + tbInfofeldUD.Text.ToString() + "' WHERE Formular_ID = " + FormularID;
Solange "Formular_ID" eine numerische id ist. Bei uniqueidentifier hochkomma verwenden.
-Mike
tbBeschreibungUD.Text.ToString()
das ToString() ist btw redundant, weil dir Text eh schon einen String zurureckliefert.
be the hammer, not the nail!
Vielleicht hilft Dir der Artikel ein wenig weiter.
Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt
Danke, leider bin ich noch nicht wirklich weiter gekommen 😦
Mein Problem ist, dass ich nicht weiss wie ich auf eine Variable im Codebehind zugrifen kann um diese dann im Query Builder als WHERE Bedingung zu benutzen.
Meine Variable ist
string FormularID = gwKundenliste.SelectedRow.Cells[8].Text.ToString();
Moin,
Ich hab den Gridview jetzt einfach programmatisch erstellt/gefüllt. So komm ich natürlich auch an meine Variable FormularID ran.
protected void ZeigeFormGenUpdatePopup(object sender, EventArgs e)
{
KlickFinder(sender);
lProjekt0.Text = gwKundenliste.SelectedRow.Cells[3].Text;
string FormularID = gwKundenliste.SelectedRow.Cells[9].Text;
string query;
MySqlCommand cmd;
MySqlConnection conn;
MySqlDataAdapter da;
DataSet ds;
conn = new MySqlConnection("SERVER=localhost;DATABASE=formular;USER ID=;PWD=;PORT=;");
conn.Open();
query = "SELECT feld.Name, formularfelder.Pflichtfeld FROM formularfelder INNER JOIN feld ON formularfelder.Feld_FK = feld.Feld_ID " + "WHERE Formular_FK = " + FormularID;
cmd = new MySqlCommand(query, conn);
da = new MySqlDataAdapter(cmd);
ds = new DataSet();
try
{
da.Fill(ds);
this.GridView2.DataSource = ds;
this.GridView2.DataBind();
conn.Close();
FormGenUpdate_ModalPopupExtender.Show();
}
catch
{
Response.Write("Es exestiert noch kein Formular für diesen Kunden");
}
}