none
請幫我看一下這一段UPDATE的語法.. RRS feed

  • 問題

  • 一直無法UPDATE資料,我檢查不出語法哪裡有問題,請眼尖的前輩們幫忙看一下

    Dim sqlstr As String = "UPDATE boss SET ([myname=@myname],[myphone1=@myphone1],[myphone2=@myphone2],[mycellphone=@mycellphone],[myfax=@myfax],[myemail=@myemail],[myaddress=@myaddress],[mypassport=@mypassport]) WHERE mynumber= " & ME.mynumber.Text
            '建立OLEDBCommand物件

            Dim dc As New OleDb.OleDbCommand(sqlstr)

            '建立Parameters
            dc.Parameters.AddWithValue("myname", Trim(Me.tb_myname.Text))
            dc.Parameters.AddWithValue("myphone1", Trim(Me.tb_myphone1.Text))
            dc.Parameters.AddWithValue("myphone2", Trim(Me.tb_myphone2.Text))
            dc.Parameters.AddWithValue("mycellphone", Trim(Me.tb_mycellphone.Text))
            dc.Parameters.AddWithValue("myfax", Trim(Me.tb_myfax.Text))
            dc.Parameters.AddWithValue("myemail", Trim(Me.tb_myemail.Text))
            dc.Parameters.AddWithValue("myaddress", Trim(Me.tb_myaddress.Text))
            dc.Parameters.AddWithValue("mypassport", Trim(Me.tb_mypassport.Text))

            Dim addinfo As Integer = db.ExecuteCmd(sqlstr, dc.Parameters)
            'Dim addinfo As Integer = db.ExecuteCmd(sqlstr)

            If addinfo > 0 Then
                MsgBox("資料更新成功", MsgBoxStyle.Information Or MsgBoxStyle.OkOnly)
            Else
                MsgBox("資料更新失敗", MsgBoxStyle.Information Or MsgBoxStyle.OkOnly)
            End If

    一直出現錯誤訊息:執行命令時發生錯誤UPdate陳述式的語法錯誤

    2007年3月17日 上午 09:33

解答

  • ㄟ...突然就可以順利的利用參數UPDATE了,我把所有括號都拿掉,然後都加上型態,就ok了....

    謝謝各位前輩的幫忙!

    2007年3月18日 上午 02:11

所有回覆

  • :::假如你的資料庫是用Access的話,應該是用?而不是@
    2007年3月17日 上午 09:51
  • 您好:

           建議您把mynumber也設成參數的方式帶入試試看。還好給參數時,最好也要給參數的型態。如下述程式片斷:

                strCommand = "UPDATE Organization SET " & _
                    "Org_Name=@Org_Name, " & _
                    "Org_TopOrgID=@Org_TopOrgID, " & _
                    "Org_Description=@Org_Description " & _
                    "WHERE Org_ID=@Org_ID"

                objCmd.CommandText = strCommand
                objCmd.Parameters.Add("@Org_ID", SqlDbType.Int, 4).Value = Org_ID
                objCmd.Parameters.Add("@Org_Name", SqlDbType.VarChar, 50).Value = Org_Name
                objCmd.Parameters.Add("@Org_TopOrgID", SqlDbType.Int, 4).Value = Org_TopOrgID
                objCmd.Parameters.Add("@Org_Description", SqlDbType.VarChar, 100).Value = Org_Description

                objCmd.ExecuteNonQuery()

    2007年3月17日 上午 10:00
  • 回小琳大大...

    我改成myname=?myname後,一樣會出現我說的錯誤訊息

    2007年3月17日 上午 11:38
  • 回Gavin Lai大大...

    有加參數ToString,一樣會出現錯誤訊息。

    2007年3月17日 上午 11:41
  • Dim sqlstr As String = "UPDATE boss SET ([myname=@myname],[myphone1=@myphone1],[myphone2=@myphone2],[mycellphone=@mycellphone],[myfax=@myfax],[myemail=@myemail],[myaddress=@myaddress],[mypassport=@mypassport]) WHERE mynumber= " & ME.mynumber.Text

    1. 把括號拿掉 .
    2. 你確定 Me.mynumber.Text 有值嗎 ?
    3. 在 ExecuteNonQuery() 之前,輸出 sqlstr 字串出來看看 .

    2007年3月17日 下午 12:53
    版主
  • 回小朱大大...

    1.括號拿掉還是如上述的錯誤訊息。

    2.確定有值,已經用MsgBox確定過。

    3.sql字串確定無誤。

    我有將SQL字串改成,不經過參數直接跑..如下:

    'Dim sqlstr As String = "Update bossdata SET myname ='" & Me.tb_myname.Text.ToString() & "',myphone1 ='" & Me.tb_myphone1.Text.ToString() & "' WHERE mynumber ='" & TextBox1.Text.ToString() & "'"

    結果,可以順利的UPDATE資料;所以問題應該是出現在參數的擷取,可否幫我看一下參數對照的語法是否正確,甘溫哪.....

    2007年3月18日 上午 01:48
  • ㄟ...突然就可以順利的利用參數UPDATE了,我把所有括號都拿掉,然後都加上型態,就ok了....

    謝謝各位前輩的幫忙!

    2007年3月18日 上午 02:11