關於system data sqlclient sqlexception必須宣告純量變數"@"

關於system data sqlclient sqlexception必須宣告純量變數"@"

最近在幫學校設計的網頁程式的進行資料庫轉移,原本都是利用GridView控制項與  AccessDataSource 連接 Access 的資料庫檔案,現在要改用 Microsoft SQL Server 2008 R2,把原先資料連接的控制項 AccessDataSource 改為 SqlDataSource 。

原本以為只要把執行sql動作的語法進行修改,例如下列命令列:

DeleteCommand="DELETE FROM [course] WHERE [序] = ?"

改成 DeleteCommand="DELETE FROM [course] WHERE [識別碼] =  @序"

結果執行測試刪除資料的動作就一直出現下列錯誤訊息:

 

應用程式中發生伺服器錯誤。

必須宣告純量變數 "@序"。

描述: 在執行目前 Web 要求的過程中發生未處理的例外狀況。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。


例外狀況詳細資訊: System.Data.SqlClient.SqlException: 必須宣告純量變數 "@序"。
原始程式錯誤:

 

檢查程式碼與網頁的原始檔,看不出來有任何錯誤,再測試執行更新的動作命令,同樣有(序 = @序)的參數設定如下列:

UpdateCommand="UPDATE course SET  開課年級 = @開課年級, 課程代碼 = @課程代碼, 領域別 = @領域別  WHERE (序 = @序)

 

執行結果卻是正常沒有錯誤訊息,反覆查了半天才發現原來漏掉設定 GridView 控制項的 DataKeyNames的屬性。

必須設定 DataKeyNames 屬性,以便讓 GridView 控制項的自動更新和刪除功能運作,所以設定DataKeyNames="序"就可以正常執行刪除資料的動作。

 

 

 

cool      歡迎引用,請注明來源出處!

作者:楊煥謀