0

ここでやろうとしているのは、ストアド プロシージャを使用して Status フィールドを "Complete" に設定することですが、何らかの理由で、ストアド プロシージャを実行した後にテーブルが更新されません。誰かがここで私を助けて、私が間違っていることを教えてもらえますか? ありがとう //ストアド プロシージャはこちら

CREATE PROCEDURE sp_Update 
  @ID varchar 

AS 
BEGIN 
 -- SET NOCOUNT ON added to prevent extra result sets from 
 -- interfering with SELECT statements. 
 SET NOCOUNT ON; 

 if exists (select Post_ID from  MyTable  WHERE Post_ID = @ID) 
  BEGIN 
        UPDATE MyTable 
        SET Status = 'Complete' 
        WHERE Post_ID = @ID 
  END 

END 

//and here is the code behind 
foreach (GridViewRow gr in GV_Action.Rows) 
        { 

                //string strID = gr.Cells[1].Text; 
                string ID = gr.Cells[1].Text; 
                SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString); 

                SqlCommand cmd = new SqlCommand("sp_Update", con); 
                cmd.CommandType = CommandType.StoredProcedure; 

                cmd.Parameters.Add("@ID", SqlDbType.VarChar).Value = ID; 

                cmd.Connection = con; 
                con.Open(); 
                cmd.ExecuteNonQuery(); 
                con.Close(); 

        }
4

1 に答える 1

0

コード "gr.Cells[1].Text" では、Cells[x] はゼロベースです。ID が最初の列にある場合は、'gr.Cells[0].Text' が必要です。次の行にブレークポイントを置き、そこにある値を確認します。

于 2012-11-07T20:48:46.670 に答える