내 코드가 Access 데이터베이스에 일부 데이터를 삽입하는 중입니다. 했다가 실패 코드 (코드 다운로드 전자 메일에 대한 라이브러리를 사용하지만 오류가 분명히 그와 관련이 없습니다)이다 :C에서 MS Access에서 행 삽입 #
foreach (MimeData mime in email.Attachments)
{
string name = NumEmail + mime.SafeFileName;
string path = (@"\\pathrandom" + name);
mime.Save(path);
long length = new System.IO.FileInfo(path).Length;
String my_querry2 = "INSERT INTO Table(id, field1, field2, field3, field4)VALUES('" + path + "','" + length + "','" + name+ "','" + value3 + "','" + date + "')";
MessageBox.Show(my_querry2);
OleDbCommand cmd2 = new OleDbCommand(my_querry, conn);
cmd.ExecuteNonQuery();
}
(ID, 날짜 및 VALUE3 함께 foreach 문에서 정의 된 변수 foo 문자열, 오늘 날짜 및 foo 문자열).
이 코드를 실행하면 삽입이 발생하지 않고 ExecutedNonQuery()
이 오류를 반환합니다. 중복 된 값을 생성하기 때문에 쿼리가 실행되지 않는다고합니다. 그러나 테이블은 완전히 비어 있으므로 'id'는 반복 될 수 없습니다. 나는 접근과 그 일을 쿼리를하려고 노력 :
INSERT INTO AchivosAdjuntos(id, field1, field2, field3, field4)VALUES('\\path','171','x.png','random','28/01/2015')
을 그리고 값을 삽입 (값이 C#을 삽입하려고하는 동일) 완벽하게 작동합니다.
DB와 연결이 잘된 것 같습니다. 삽입하기 전에 잘 수행 한 다른 작업을했기 때문입니다.
그래서 ... 내가 뭘 잘못하고있어? : S
당신은 SQL 주입을 벌리고 자신을 떠나 같은 SQL 문을 구축하는 문자열 연결을 사용하지 마십시오. 매개 변수를 대신 사용하십시오. – Matt
중복 된 키에 대해 불평합니다. 따라서 동일한 기본 키 또는 필드 값 조합과 테이블의 고유 인덱스 정의가 충돌하는 두 개의 레코드를 삽입하려고합니다. 테이블의 인덱스와 기본 키가 무엇인지 확인 – Steve
내가 말한 것처럼 키가있는 유일한 필드는 'id'이고 테이블은 완전히 비어 있으므로 실제로 문제가 될 수 없습니다. 또한 sql 이후 동일한 데이터를 삽입 할 수 있으므로 중복 문제는 실제로 생각할 수 없습니다. 매트가 말한 것을 시도하고 매개 변수로 해보겠습니다. – Nimrrod