sql
  • vb.net
  • 2014-10-07 75 views 0 likes 
    0

    下面的語句導致「數據類型不匹配」錯誤,我不知道爲什麼。你能幫我解決嗎?爲什麼UPDATE語句總是產生「數據類型不匹配」錯誤?

    cmd.CommandText = "UPDATE C_DETAILS" & " SET C_ID='" & Me.C_ID.Text & "',C_NAME='" & Me.C_NAME.Text & "', C_FATHER='" & Me.C_FATHER.Text & "',C_PHONE= '" & Me.C_PHONE.Text & "',C_GENDER='" & Me.C_GENDER.Text & "',C_DOB='" & Me.C_DOB.Text & "',C_ADDRESS='" & Me.C_ADDRESS.Text & "'" & "WHERE C_ID=" & Me.C_ID.Text & "" 
    cmd.ExecuteNonQuery() 
    

    回答

    1

    什麼數據類型在表C_ID

    在這裏,你引用它作爲一個字符串(通過包裝在單引號中的值):

    ... SET C_ID='" & Me.C_ID.Text & "' ... 
    

    在這裏,你引用它作爲一個數字(沒有單引號):

    ... WHERE C_ID=" & Me.C_ID.Text & "" 
    

    它不能兼而有之。所以這兩個之一是不正確的。


    也和這是重要的,你在問題中所顯示的代碼表示SQL injection vulnerability,這是在軟件當今最常見的和危險的安全漏洞之一。請改用parameterized queries。像這樣的直接字符串連接應該在產品代碼中使用永不

    0

    由於在where中,您沒有使用過單引號,這意味着它是一個int字段,並且它顯示更新錯誤。因此,假設它是int字段,您可以使用以下行代替您的代碼。

    cmd.CommandText = "UPDATE C_DETAILS" & " SET C_ID=" & Me.C_ID.Text & ",C_NAME='" & Me.C_NAME.Text & "', C_FATHER='" & Me.C_FATHER.Text & "',C_PHONE= '" & Me.C_PHONE.Text & "',C_GENDER='" & Me.C_GENDER.Text & "',C_DOB='" & Me.C_DOB.Text & "',C_ADDRESS='" & Me.C_ADDRESS.Text & "'" & "WHERE C_ID=" & Me.C_ID.Text & ""

    而且,這可能是真的,C_ID可能是一個字符串/ varchar字段,那麼你就需要使用以下。

    cmd.CommandText = "UPDATE C_DETAILS" & " SET C_ID='" & Me.C_ID.Text & "',C_NAME='" & Me.C_NAME.Text & "', C_FATHER='" & Me.C_FATHER.Text & "',C_PHONE= '" & Me.C_PHONE.Text & "',C_GENDER='" & Me.C_GENDER.Text & "',C_DOB='" & Me.C_DOB.Text & "',C_ADDRESS='" & Me.C_ADDRESS.Text & "'" & "WHERE C_ID='" & Me.C_ID.Text & "'"

    相關問題