2016-08-04 6 views
0

Ich habe eine Web-Anwendung, die erstellt ein Barcode-Bild basierend auf Benutzereingaben generiert. Der Benutzer wählt Werte aus, die in einer Datenbank gespeichert sind und die dann in einem datenbankspezifischen Kontrollkästchen angezeigt werden. Meine Prozedur fügt die Benutzereingabewerte ohne Probleme in die Datenbank ein, erstellt jedoch neue Daten in der Datenbank. Was ich versuche herauszufinden, ist, wie man eine Where-Klausel in einem Sinn bestimmt, ob es in meiner gespeicherten Prozedur oder in meinem Code ist, wo das gewählte datenbankspezifische Kontrollkästchen die bestimmte Zeile in meiner Datenbank aktualisiert, anstatt eine zu erstellen neue Reihe. Wohlgemerkt, es ist nur ein Kontrollkästchen im Gegensatz zu einer Checkbox-Liste.Update bestimmte Zeile in der Datenbank mit Check-Box Checked Wert

protected void gen_barcode(object sender, EventArgs e) 
{ 
    int n; 
    int i = Int32.Parse(amount.Text); 

    string date_picker = datepicker.Text; 

    SqlConnection conn = new SqlConnection(GetConnectionString()); 

    SqlCommand cmd = new SqlCommand(); 
    cmd.Connection = conn; 

    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.CommandText = "barcode_insert" 
    cmd.Parameters.AddWithValue("@Amount", amount.Text); 
    cmd.Parameters.AddWithValue("@Date", datepicker); 

    if (CheckBox_Code.Checked) 
    { 
      //generate image code 
    } 

    cmd.Connection.Open(); 
    cmd.ExecuteNonQuery(); 
    conn.Close(); 
} 

Checkbox Bind

public void CheckBoxBind() 
{ 
    SqlConnection conn = new SqlConnection(GetConnection()); 

    using (SqlCommand cmd = new SqlCommand()) 
    { 

     cmd.CommandText = "Select CheckBoxCode FROM CodeTable Where CheckBoxCode LIKE 'EX'" 
     cmd.Connection = conn; 
     conn.Open(); 

     using (SqlDataReader rdr = cmd. ExecuteReader()) 
     { 
      while (rdr.Read() 
      { 
      CheckBox_Code.Text = rdr["CheckBoxCode"].ToString() 
      cmd.Parameters.AddWithValue("@CheckBoxCode", CheckBox_Code) 
      } 
     } 

     conn.Close(); 
    } 

} 

Antwort

0

Line 6 Ihrer CheckBoxBind() muss die Parameternamen in der select-Anweisung verwenden:

cmd.CommandText = "Select CheckBoxCode FROM CodeTable Where CheckBoxCode = @CheckBoxCode "

+0

Eigentlich mein erster Code war falsch Eigentlich sollte es "CheckBoxCode LIKE 'EX" sein, was natürlich zu einem Deklarationsfehler führt. Ich werde meinen Code bearbeiten, um das zu berücksichtigen. – walangala