sql
  • vb.net
  • 2014-10-07 2 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 & "'"

    관련 문제