2012-03-06 2 views
0

MS Access 데이터베이스를 사용하여 데이터를 저장하는 C#에서 폼 기반 프로그램을 작성했습니다. MDB를 파일에서 C#에서 OleDb를 사용하여 ACCESS 데이터베이스에서 sql 명령을 사용하는 방법

는 나는 새 항목을 추가 할 때 그래서 자동해야, 하나의 테이블이 첫 번째는 __item_id__ 호출되는 7 개의 필드는하고 테이블의 자동 인덱서입니다 테이블에 __item__ 라는 이름의이 증가 할 때마다 매번 같은 이드를 가진 엔트리가 2 개 없을 것입니다. 나는 다음과 같은 코드를 사용하는 프로그램에서

(이것은 전체 코드, 단지 해당 아니다) :이 코드는 내가 너무 적은 필드가 주장하는 나에게 오류 __ExecuteNonQuery__을 줄 것이다

using System.Data.OleDb; 

private OleDbConnection con; // create connection 
private OleDbCommand cmd; // create command 

con = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = d:\\library0.1\\DB.mdb"); 
cmd = new OleDbCommand(); 
cmd.Connection = con;  

cmd.CommandText = "INSERT INTO Item VALUES (@item_name, @creator_name,@publishing_name,@item_type,@genre,@year_publication);"; 
con.Open(); // open the connection 
cmd.ExecuteNonQuery(); 
con.Close(); 

.

cmd.CommandText = "INSERT INTO Item VALUES (@item_id, @item_name, @creator_name,@publishing_name,@item_type,@genre,@year_publication);"; 

가 어떻게 수동 입력을 방지하고 프로그램 자동 색인 새로운 각 항목에 대한 item_id을 가질 수 그것은 나를 다음과 같이 수동으로 __item_id__를 입력하고 싶어?

답변

1

열 목록을 지정하지 않고 INSERT INTO를 사용하는 경우 모든 열에 매개 변수를 제공해야합니다. 오류가 귀하의 CommandText을 변경 방지하기 위해
:

IT 작동
"INSERT INTO Item " + 
"(item_name, creator_name publishing_name, item_type, genre, year_publication) " + 
"VALUES " + 
"(@item_name, @creator_name,@publishing_name,@item_type,@genre,@year_publication);"; 
+0

! 들으 ... 내가 유래를 사랑하는 이유, 9min 내가 해결하기 위해 노력 3시간 마지막 밤을 보냈다 문제를 해결하기 위해 이잖아 – Iakovl

관련 문제