2016-08-05 20 views
0

Ich habe eine Webanwendung, die Benutzereingaben annimmt und ein Bild aus Benutzereingaben generiert. Diese Bilder sollten in einer Sequenz generiert werden und müssen jeden Tag neu eingestellt werden.Sequentiell gespeicherte Prozedur mit Benutzereingabe

Ich versuche, die Sequenzwerte zumindest zu speichern, die Reihenfolge und das Datum in eine Datenbank, aber es wird nicht aktualisiert.

Bisher wird meine Datenbank nicht aktualisieren, mein Code funktioniert, aber die Durchführung ist nicht richtig. Ich bin mir nicht sicher, wo mein Problem liegt. Ich fand ähnliche Hilfe online, aber sie schienen nicht zu funktionieren.

Stored Procedure:

ALTER PROCEDURE barcode_insert(
    @Seq_Num int, 
    @date datetime, 
    @ImageName varchar 
) 
AS 
BEGIN 
    SET NOCOUNT ON 

    UPDATE ImageInfoTable 
    SET imagedate = @date,ImageNum = @Seq_Num 
    WHERE image_name = @ImageName 
END 

RETURN @Seq_Num 

C# -Code

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("@Seq_Num", amount.Text); 
    cmd.Parameters.AddWithValue("@date", date_picker); 
    cmd.Parameters.AddWithValue("@ImageName", CheckBox.Checked); 

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

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

Ich bin sicher, dass sie nur Tippfehler sind, aber Ihre gespeicherte Prozedur scheint ein paar Probleme zu haben: = + ist kein Operator und Sie brauchen ein Komma nach der ersten Spalte in der SET-Anweisung. Ich denke du meintest das: 'SET imagedate = @date, ImageNum = @ Seq_Num'? – ghg565

+0

Sie waren, ich entschuldige mich, Ich habe das Stored Procedure-Code in der Frage – walangala

+0

Das andere Problem, das ich sehe, ist, dass Sie die Datepicker Kontrolle im Parameter anstelle des Datumsauswahl steuert Wert verwenden. Sollte date_picker sein. – ghg565

Antwort

0

Versuchen Sie, die Typen Ihrer Parameter explizit einstellen.

protected void gen_barcode(object sender, EventArgs e) 
{ 
    DateTime date_picker = datepicker.Value; 
    int intAmount; // get the int value for the amount here... 
    String imgName; // get the image name here... 
    SqlConnection conn = new SqlConnection(GetConnectionString()); 

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

    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.CommandText = "barcode_insert" 

    cmd.Parameters.Add("@Seq_Num", SqlDbType.Int); 
    cmd.Parameters.Add("@date", SqlDbType.DateTime); 
    cmd.Parameters.Add("@ImageName" , SqlDbType.NVarChar); 
    cmd.Parameters["@Seq_Num"].Value = intAmount; 
    cmd.Parameters["@date"].Value = date_picker; 
    cmd.Parameters["@ImageName"].Value = imgName; 

    if (CheckBox_Code.Checked) 
    { 
      //put this somewhere else since it isn't related in function 
    } 

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

Ja genau wie @AlexKudryashev angegeben, es gab Fehler in meinem ursprünglichen Code, ich habe es bearbeitet, während der Code funktioniert, es aktualisiert nicht die Tabelle in der Datenbank. – walangala

+0

aktualisiert die gespeicherte Prozedur die Daten direkt von SQL Management Studio? – ghg565

+0

ja, die eingegebene Nummer wird nicht in der Reihenfolge aktualisiert, ich habe das aktuelle Datum auf die Spalte in der Datenbank angewendet, beim Ausführen meiner App ändert sie sich in ein Datum zurück in 2008 – walangala