2012-06-06 65 views
0

我有一個事件觸發按鈕單擊,調用存儲過程從數據庫中刪除選定的行。ASP.NET 2.0存儲過程刪除不起作用

在調試這個我已經硬編碼的存儲過程的ID,以確保刪除正在對SQL一邊,所以我不會發布存儲過程。我也進入了我的頁面,並選擇要刪除的記錄,確保隱藏字段被設置爲記錄的ID。

當我點擊我看到帖子後面出現,所以我看到按鈕發射,它可能是一些小的和愚蠢的我的代碼或者權限問題我不知道,或者到哪裏尋找。

存儲過程的參數是一個整數,我不打捕獲或拋出任何類型的數據只是沒有被刪除的錯誤。

感謝在這個問題上的任何幫助,因爲它總是被大加讚賞。

這是在點擊按鈕時觸發該代碼。

if (isAdmin) 
{ 
    SqlConnection cnx = new SqlConnection(server); 
    SqlCommand cmd = new SqlCommand("STOREDPROCNAME", cnx); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Parameters.AddWithValue("@VARIABLEFORPROC", Convert.ToInt16(hiddenfield1.Value.ToString())); 

    try 
    { 
     cnx.Open(); 
     cmd.ExecuteNonQuery(); 
     cnx.Close(); 
    } 
    catch (Exception ex) 
    { 
     throw new Exception("Error executing MyProcedureName.", ex); 
    } 
} 

fillDataGrids(); 
+0

更換

cmd.Parameters.AddWithValue("@VARIABLEFORPROC", Convert.ToInt16(hiddenfield1.Value.ToString())); 

和isAdmin明確設置爲true,暫時我還沒有添加這個功能呢。 –

+0

您是否瀏覽了代碼並驗證了您用作參數的隱藏字段值是否爲有效值? –

+0

您是否嘗試過運行SQL事件探查器以確保查詢實際上到達SQL Server? –

回答

2

The SQL Int type maps to the C# Int32 type。您的轉換可能會導致數據丟失。試着用

cmd.Parameters.AddWithValue("@VARIABLEFORPROC", Convert.ToInt32(hiddenfield1.Value.ToString())); 
+0

粉筆一小,愚蠢。感謝Jon解決了我的問題。 –

0

你必須嘗試在存儲過程中的準確性SQL 後多嘗試在一個交易並登錄數據庫 例外,你必須確保其中的錯誤發生