2016-08-05 6 views
0

私はユーザ入力を受け取り、ユーザ入力から画像を生成するWebアプリケーションを持っています。これらの画像はシーケンスで生成され、毎日リセットする必要があります。ユーザ入力を伴うシーケンシャルなストアドプロシージャ

少なくともシーケンス値、シーケンス、および日付をデータベースに格納しようとしていますが、更新されません。

これまでのところ、データベースは更新されず、コードは正常に機能していません。私はどこに問題があるのか​​分かりません。私は同様のヘルプをオンラインで見つけましたが、うまくいかないようでした。

ストアドプロシージャ:

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#コード

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

私は、彼らはのを単にタイプミスしているが、あなたのストアドプロシージャは、夫婦の問題を持つことになりますと確信している:= +は演算子ではないですし、SETステートメントの最初の列の後にカンマが必要です。私はあなたがこれを意味したと思う: 'SET imagedate = @date、 ImageNum = @ Seq_Num'? – ghg565

+0

彼らは、私はお詫び申し上げます、質問のストアドプロシージャコードを編集しました – walangala

+0

私が見る他の問題は、datepickerコントロールの値の代わりに、パラメータでdatepickerコントロールを使用していることです。 date_pickerである必要があります。 – ghg565

答えて

0

明示的にパラメータの種類を設定してみてください。

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

はい、@AlexKudryashevのように、私の初期コードにエラーがあり、編集しましたが、コードは動作しますが、データベースのテーブルは更新されていません。 – walangala

+0

ストアドプロシージャはSQL管理スタジオから直接データを更新しますか? – ghg565

+0

はい、それは入力された番号がシーケンスで更新されていない、データベース内の列に現在の日付を適用した、私のアプリケーションを実行すると、2008年に戻る日付に変更 – walangala

関連する問題