none
具名參數語法 RRS feed

  • 問題

  • 請問前輩:

    我寫了如下的 Update Command,把資料存入Access資料庫中

    Dim Newcommand As OleDbCommand = New OleDbCommand("update R set R_Name='" & TxtName.Text & "',R_Memo='" & Txtmemo.Text & "',R_CloseYn=" & CheckClosed.Checked & " where R_Id='" & RId & "'", strConn)

    但是為了怕使用者輸入一些符號而產生錯誤,所以將程式改為下面:

    Dim Newcommand As OleDbCommand = New OleDbCommand("update R set R_Name=@RName,R_Memo=@RMemo,R_CloseYn=@RCloseYn where R_Id=@R_Id", strConn) 
            Newcommand.Parameters.Add(New OleDbParameter("@R_Id", RId))
            Newcommand.Parameters.Add(New OleDbParameter("@RName", TxtName.Text))
            Newcommand.Parameters.Add(New OleDbParameter("@RMemo", Txtmemo.Text))
            Newcommand.Parameters.Add(New OleDbParameter("@RCloseYn", CheckClosed.Checked)) 

     

    但是改過的程式卻不能修改資料了,也沒有任何的錯誤或例外狀況出現,但是資料就是改不進去...

    請問是不是我的具名參數語法有錯???

     

    請學長幫助一下....謝謝...............


    努力吸收新知的海綿~
    2009年1月29日 上午 07:59

解答

  • 哈~~我知道了~~

    原來具名參數是要照順序的, 改成如下就可以了.

    Dim Newcommand As OleDbCommand = New OleDbCommand("update R set R_Name=@RName,R_Memo=@RMemo,R_CloseYn=@RCloseYn where R_Id=@R_Id", strConn) 
            
            Newcommand.Parameters.Add(New OleDbParameter("@RName", TxtName.Text))
            Newcommand.Parameters.Add(New OleDbParameter("@RMemo", Txtmemo.Text))
            Newcommand.Parameters.Add(New OleDbParameter("@RCloseYn", CheckClosed.Checked)) 
            Newcommand.Parameters.Add(New OleDbParameter("@R_Id", RId))

    :)


    努力吸收新知的海綿~
    • 已提議為解答 LOLOTAModerator 2009年1月30日 上午 08:58
    • 已標示為解答 Lolota Lee 2009年2月9日 上午 10:20
    2009年1月29日 下午 11:27

所有回覆

  • 哈~~我知道了~~

    原來具名參數是要照順序的, 改成如下就可以了.

    Dim Newcommand As OleDbCommand = New OleDbCommand("update R set R_Name=@RName,R_Memo=@RMemo,R_CloseYn=@RCloseYn where R_Id=@R_Id", strConn) 
            
            Newcommand.Parameters.Add(New OleDbParameter("@RName", TxtName.Text))
            Newcommand.Parameters.Add(New OleDbParameter("@RMemo", Txtmemo.Text))
            Newcommand.Parameters.Add(New OleDbParameter("@RCloseYn", CheckClosed.Checked)) 
            Newcommand.Parameters.Add(New OleDbParameter("@R_Id", RId))

    :)


    努力吸收新知的海綿~
    • 已提議為解答 LOLOTAModerator 2009年1月30日 上午 08:58
    • 已標示為解答 Lolota Lee 2009年2月9日 上午 10:20
    2009年1月29日 下午 11:27
  •  Access 資料庫我不清楚,但是 SQL Server Provider (SqlClient) 不必一定要依順序放。
    不想被人認為是小白,就不要總是在做一堆會讓人認為是小白的事。
    2009年1月30日 上午 12:49
    版主