0

データベース内:

Alter Procedure Update_MaterialTransactionsto2ForWithdrawal
  @materialName varchar(50),
  @staffNumber varchar(10),
  @description varchar(50),
  @transactionID int
As
Begin
   Update Table_MaterialTransactions
   set Status=2
   where StaffNumber = @staffNumber 
     and CrossSection = @description 
     and SubSubCategory = @materialName 
     and Status = 1 
     and TransactionID = @transactionID
End

データアクセス層:

public static void UpdateMaterial(string staffNumber,string materialName,string description,int transaction)
{
    SqlConnection connection = new SqlConnection(ConnectDatabase.ReturnConnectionString());
    //I am passing connection string as the parameter

    try
    {
        connection.Open();
        SqlCommand cmd = new SqlCommand("Update_MaterialTransactionsto2ForWithdrawal", connection);

        cmd.CommandType = CommandType.StoredProcedure;

        cmd.Parameters.Clear();
        cmd.Parameters.Add("@materialName", SqlDbType.Varchar, 50).Value = materialName;
        cmd.Parameters.Add("@staffNumber", SqlDbType.Varchar, 50).Value = staffNumber;
        cmd.Parameters.Add("@description", SqlDbType.Varchar, 50).Value = description;
        cmd.Parameters.Add("@transactionID", SqlDbTypeInt).Value = transactionID;

        int i = cmd.ExecuteNonQuery();

        connection.Close();
    }
    catch(Exception ex)
    {
       connection.Close();
    }

クライアント側:

void btnSubmit_Click(Object sender,EventArgs e)
{
   int j=0,k=0;

   for(int i=0;i<transactions.Count;i++)
   {
       string id = "ctl00$ContentPlaceHolder1$" + i.ToString();

       CheckBox chk=(CheckBox)Page.FindControl(id);

       if(chk.Checked == true)
       {
            Objects.UpdateMaterial(staffNumbers[i].ToString(), materials[i].ToString(), descriptions[i].ToString(), Convert.ToInt32(transactions[i]));

            j++;
       }
       else
       {
            Objects.DeleteTheSelectedRowOfMaterialTransaction(staffNumbers[i].ToString(), materials[i].ToString(), descriptions[i].ToString(), Convert.ToInt32(transactions[i]));

            k++;
        }
   }

テーブルにチェックボックスがあり、ユーザーがチェックボックスをオンにして送信をクリックすると、チェックボックスがデータベースを更新します。

しかし、cmd.ExecuteNonQuery()は実行されておらず、0 行を返しています。エラーは発生していません。しかし、データベースでこれを手動で行うと、ストアド プロシージャは正常に動作します。

どこが間違っているのか教えてください。

4

1 に答える 1

0

手順の最後の行を追加してみてください

Return @@Rowcount
于 2013-04-10T12:22:55.603 に答える