2017-12-07 10 views
1

누락 된 부분을 모르지만 액세스 데이터베이스 삽입시 구문 오류가 계속 발생합니다.Access 데이터베이스 삽입시 SQL 구문 오류가 발생했습니다.

string sql = "INSERT INTO Users (FirstName, LastName, BirthDate, Username, 
        Password) VALUES ('{0}','{1}','{2}','{3}','{4}');"; 
string sqlF = String.Format(sql, f, l, dob.ToString("MM/dd/yyyy"), u, Encrypt(p)); 
MessageBox.Show(sqlF); 
OleDbConnection conn = DBConn(_BudgetMainDB, _BudgetMainPass); 
OleDbCommand cmd = conn.CreateCommand(); 
conn.Open(); 
cmd.CommandText = sqlF; 
cmd.Connection = conn; 
cmd.ExecuteScalar(); 
다음

enter image description here enter image description here

+2

가) DB 매개 변수를 항상 사용하십시오. 당신의 코드는'O'Brien'이나'D' Artagne'와 같은 이름에서 실패 할 것입니다. B) 암호를 평문이나 암호로 저장하지 마십시오. C) 날짜를 텍스트로 저장하지 마십시오. 그들은 날짜처럼 행동하지 않습니다. – Plutonix

+1

어떻게됩니까? 모든 값 매개 변수를 전달하지 않으면이 기능이 작동합니까? 또한 대괄호로'[Password]와 [UserName]'을 감 쌉니다. cmd.ExecuteScalar()는'1' 행을 반환하는 Select 문을 나타냅니다. 다음'INSERT, UPDATES, DELETES'을 수행 할 때'cmd.ExecuteNonQuery()'를 사용할 필요가 있습니다. 또한'using() {}'구문을 사용하여 Sql 객체를 래핑하는 방법을 읽습니다. 현재 SQL은 결함이있다 – MethodMan

+1

. 이제까지. 사슬 같이 잇다. 입력. 으로. SQL. - 진지하게, 그렇게하지 마라. 이것은 유용 할 수 있습니다 : http://blog.marcgravell.com/2017/12/dapper-prepared-statements-and-car-tyres.html –

답변

0

는 비밀번호를 알아 낸 내 데이터베이스와 구문의 이미지입니다 예약어 그래서 난 괄호에 넣어해야한다 : 여기에 내가 사용하고있는 코드는 . 바보 실수 :/

+2

나는 무례한 것을 의미하지는 않지만 그것은 많은 실수 중 하나 일뿐입니다. 이리. 'password'라는 텍스트 컬럼은 "no! stop!"이라는 거대한 적색 플래그입니다. (암호를 암호화하지 않아도 여전히 근본적으로 손상됨) 삽입 코드에 SQL 주입 버그가 일부 추가되어 사용자 암호가 누출됩니다. 진지하게 : 이것은 매우 위험한 코드입니다. –