2008-09-30 2 views
0

C# 및 Microsoft.Jet.OLEDB.4.0 공급자를 사용하여 Access mdb에 행을 삽입합니다.Microsoft.Jet.OLEDB.4.0을 사용하여 C#에서 Access db에 행을 삽입하고 자판 열을 0으로 설정합니다.

네, Access sucks를 알고 있습니다. 그것은 거대한 레거시 애플 리케이션이며, 다른 모든 것들이 잘 작동합니다.

테이블에 자동 번호 열이 있습니다. 행을 삽입하지만 자 동 번호 열은 0으로 설정됩니다.

나는이 문제에 관해 알아보고이 주제에서 찾을 수있는 모든 기사를 읽었습니다. 하나는 autonumber 열에 -1을 삽입하는 것이 좋지만이 방법은 작동하지 않습니다. 내가 찾을 수있는 다른 제안은 없었습니다.

큰 SQL 텍스트 문자열을 연결하지 않고 OleDbParameter 's를 사용하고 있습니다.

나는 거래를하거나하지 않고 삽입을 시도했다. 차이 없음.

이 삽입물을 어떻게 작동 시키나요? (자동 번호 열 내용을 올바르게 설정하십시오.) 사전에 대단히

감사합니다, 아담 Leffert

답변

2

액세스 할 때 명시 적 값을 IDENTITY (a.k.a. Automnumber) 열에 INSERT하는 것이 가능합니다. 사용자 (또는 미들웨어)가 IDENTITY 열에 값 0을 쓰고 있고 IDENTITY 열에 고유 한 제한 조건이 없다면 설명 할 수 있습니다.

그냥 당신이 IDENTITY 열을 생략한다 구문

INSERT INTO (<column list>) ... 

및 열 목록을 사용한다 명확합니다. Jet SQL을 사용하면 전체 열 목록을 생략 할 수 있지만 암시 적으로 에는 IDENTITY 열이 포함됩니다. 따라서 INSERT INTO() 구문을 사용하여 명시 적으로 IDENTITY 열을 생략해야합니다.

Access/Jet에서는 명시 적 값을 IDENTITY 열에 쓸 수 있습니다.이 경우 값은 자동으로 생성되지 않습니다. 따라서 사용자와 미들웨어 (ADO.NET 등)가 IDENTITY 열에 0 값을 명시 적으로 쓰지 않는지 확인하십시오.

아래 표 식별 컬럼 매초 INSERT 제로 값을 자동 생성 BTW 단지 님

CREATE Table Test1 
(
    ID INTEGER IDENTITY(0, -2147483648) NOT NULL, 
    data_col INTEGER 
); 
0

은 삽입을하고, 당신은 일련 번호 열에 대한 값을 지정하지되어 있는지 확인해야합니다. SQL Server와 마찬가지로 ID 열의 값을 삽입하지 않습니다.

관련 문제