Laden...

Where Bedingung mit selected row

Erstellt von Shizora vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.113 Views
S
Shizora Themenstarter:in
36 Beiträge seit 2010
vor 13 Jahren
Where Bedingung mit selected row

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.

6.911 Beiträge seit 2009
vor 13 Jahren

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!"

S
Shizora Themenstarter:in
36 Beiträge seit 2010
vor 13 Jahren

Danke für den Hinweis, ich werde mir das wohl mal genauer anschauen müssen 😃
Aber wie komme ich mit meinem Problem jetzt weiter?

M
1 Beiträge seit 2010
vor 13 Jahren

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

458 Beiträge seit 2007
vor 13 Jahren
tbBeschreibungUD.Text.ToString()

das ToString() ist btw redundant, weil dir Text eh schon einen String zurureckliefert.

be the hammer, not the nail!

1.433 Beiträge seit 2006
vor 13 Jahren

Vielleicht hilft Dir der Artikel ein wenig weiter.

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

S
Shizora Themenstarter:in
36 Beiträge seit 2010
vor 13 Jahren

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();

S
Shizora Themenstarter:in
36 Beiträge seit 2010
vor 13 Jahren

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");
            }
        }