2014-12-30 2 views
-4

여기에 제 코드가 있습니다.쿼리를 실행하는 중에 오류가 발생합니다.

Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\speednet\speed_net.accdb") 
Dim com As New OleDbCommand 
con.Open() 
com.Connection = con 
com.CommandText = "insert into users (name,username,password,user_type) values ('" & name1.Text & "' ,'" & username.Text & "' ,'" & password.Text & "','" & account_type.Text & "')" 
com.ExecuteNonQuery() 

오류 :

Syntax error in insert into statement ...

캔트 문제를 찾을 수 있습니다.

+0

그리고 정확하게 오류가 무엇입니까? –

+1

암호는 액세스 할 때 예약 된 키워드입니다. 대괄호'[password]'와 함께 사용하십시오. – Steve

답변

2

Password is a reserved keyword 액세스 중. 그 단어 주위에 대괄호가 필요합니다.
그러나 문자열 연결 대신 parameter approach을 사용하도록 쿼리를 수정해야합니다. 그렇지 않으면 더 위험한 상황이 발생할 수 있습니다. Sql Injection에 대해 읽고 연결된 문자열 중 하나에 작은 따옴표가 있으면 어떻게됩니까?

그래서

Using con = New OleDbConnection("....") 
Using com = New OleDbCommand("insert into users " & _ 
          "(name,username,[password],user_type) " & _ 
          "values (@name, @uname,@pass,@acctype)", con) 
    con.Open() 
    com.Parameters.AddWithValue("@name", name1.Text) 
    com.Parameters.AddWithValue("@uname", username.Text) 
    com.Parameters.AddWithValue("@pass", password.Text) 
    com.Parameters.AddWithValue("@acctype", account_type.Text) 
    com.ExecuteNonQuery() 
End Using 
End Using 
관련 문제