2013-05-10 55 views
1

我有下面的代碼觸發存儲過程通過匹配參數與表中的主鍵刪除記錄。我通過調試運行代碼一切正常分配,但我不斷收到一個錯誤,指出有太多的參數指定。我認爲這與我的存儲過程有關,因爲值正在正確分配。存儲過程太多的參數錯誤

Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand 
    Dim CurrentCommand As String = e.CommandName 
    Dim CurrentRow As Integer = Int32.Parse(e.CommandArgument.ToString()) 
    Dim ID As String = GridView1.DataKeys(CurrentRow).Value 

    sqlds.DeleteParameters.Add("KeyOpType", ID) 
    sqlds.Delete() 


End Sub 

存儲過程在SQL Server 2008

ALTER PROCEDURE [dbo].[GetGenInfo_DeleteMines] 
(@KeyOpType int) 
AS 
Delete FROM GenInfo_OpType 
Where KeyOpType = @KeyOpType 
+2

什麼是'sqlds'?你爲什麼使用'DeleteParameters.Add'而不是命令對象設置爲存儲過程,只是'Parameters.AddWithValue()'和'cmd.ExecuteNonQuery()'?你需要選擇你的VB.Net代碼是否要調用臨時命令(比如'DELETE')或執行存儲過程。 – 2013-05-10 20:45:27

+0

Sqlds是我的sqldatasource。我想只使用存儲過程。我應該刪除sqldatasource控件並在我的代碼中創建連接嗎? – 2013-05-10 21:06:14

+0

是的,當您的目標是調用刪除單行的存儲過程時,爲什麼要使用數據源?這就像清空整個冰箱扔掉壞牛奶一樣。 – 2013-05-10 21:09:28

回答

0

你在哪裏設置你的刪除命令?我們確實知道它在調用正確的程序嗎?我認爲這是你想要做的。檢查:

如果

SQLDataSource with GridView and CRUD

+0

這是我的SQLDataSource。 – 2013-05-11 01:42:14

0

不知道這將解決您有什麼問題....但

看樣子你缺少的存儲過程的開頭。我對此很陌生,但我認爲這是必需的。

ALTER PROCEDURE [dbo].[GetGenInfo_DeleteMines] 
(@KeyOpType int) 
AS 
BEGIN <-----------------------------------MISSING THIS 
Delete FROM GenInfo_OpType 
Where KeyOpType = @KeyOpType 

另外,我沒有看到你在vb代碼中調用SP的位置。

編輯:爲了給進一步的例子....

我身後的GV行命令的代碼應該是這樣的......(如果從上GV按鈕/鏈接未來必須添加的CommandName = 「SomeCommandName」到gv上的控件)

Protected Sub gvName_RowCommand(sender As Object, e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gvName.RowCommand 

     Dim tGrid As GridView = DirectCast(sender, GridView) 
     Dim tIndex As Integer = Convert.ToInt32(e.CommandArgument) 
     Dim row As GridViewRow = Nothing 

Select Case e.CommandName 
      Case "SomeCommandName" 
       CallToDelete(tGrid.DataKeys(tIndex).Value) 
     End Select 

    End Sub 
+0

BEGIN不是必需的(雖然是恕我直言的最佳實踐)。如果您添加BEGIN但不添加END,這並沒有多大幫助。無論如何,這不是問題的根源。 – 2013-05-10 21:07:59