2012-11-07 11 views
0

所有我在这里要做的是使用存储过程将状态字段设置为“完成”,但出于某种原因,它没有在运行存储过程后更新我的表。有人可以帮助我在这里,告诉我做错了什么?感谢 //这里是存储过程如何使用参数和存储过程

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(); 

     } 
+0

使用SQL事件探查器查看服务器上正在执行的操作,并报告您的发现。 – Dai

+0

我看不出你的代码有什么问题......有没有例外抛出?也许尝试从存储过程中返回一些值,以进行完整性检查。 – McGarnagle

+0

不,没有异常抛出..有没有办法,我可以找出如果程序运行成功? – moe

回答

0

在代码 “gr.Cells [1]。文本” 细胞[X]是基于零的。如果ID在第一列,那么你需要'gr.Cells [0] .Text'。在下一行放置一个断点,看看你在那里有什么价值。

+0

“gr.Cells [1] .Text”是第二列。 – moe

+0

好吧,我按照你的建议放了一个断点,我的ID似乎是空白的。有没有一种不同的方式,我可以访问gridview值并将其分配为字符串ID?谢谢 – moe

+0

我可以在这里得到帮助吗?访问gridview中的值的正确方法是什么?谢谢 – moe