0

VS2012 Express 만 사용하여 내 응용 프로그램에 대한 전체 데이터베이스를 만들었으므로 (localdb를 사용하고 있습니다) 데이터베이스를 만들고 응용 프로그램에 사용할 데이터 집합 및 테이블 어댑터를 만드는 작업을 처리했습니다. . 지금까지 잘 작동했습니다. 필자는 비동기 데이터베이스 읽기를 허용하는 래퍼 클래스도 만들었으며 이는 또한 훌륭하게 작동합니다.삽입 메서드가 예상대로 작동하지 않습니다.

INSERT INTO Races (ChampionshipID, Driver1, Driver2, RaceTime) 
VALUES  (@ChampionshipID,@Driver1,@Driver2,@RaceTime); 
SELECT ID, ChampionshipID, Driver1, Driver2, RaceTime FROM Races WHERE (ID = SCOPE_IDENTITY()) 

나는 그것이를 반환하기 위해 하나의 select 않습니다 참조 : I합니다 (Races 테이블에 예를 들어) 내 삽입 방법을 추가 할 때 디자이너 내 테이블 어댑터를 보면

, 그것은 다음 쿼리를 사용 방금 삽입 된 행. 그건 내가 원하는 것에 완벽 해. 그러나, 생성하는 실제 방법은 다음과 같은 서명이 있습니다

int Insert1(long ChampionshipID, long Driver1, long Driver2, DateTime RaceTime)

그것은이 int 아니라 예상 DataRow 또는 DataTable을 반환하는 것을,도 아니다에 삽입 할 수있는 매개 변수로 DataTable을 않습니다.

내가 잘못 했나요? 이 기능을 어떻게 구현할 수 있습니까?

+0

명백하게하기 위해 SELECT *는 행을 다시 데이터 집합 *으로 읽지 만 호출하는 프로그램에 행을 반환하지 않습니다. 즉, INSERT로 업데이트 된 ID 또는 타임 스탬프 필드는 읽을 데이터 세트에서 사용할 수 있습니다. – peterG

답변

1

삽입 메서드가 메서드를 사용하기 때문에 ADO.NET인데, 삽입 메서드가 삽입 된 레코드의 ID가 int 인 이유입니다.

삽입 후 바로 select @@identity과 같은 검색어를 사용해 볼 수 있습니다. 그러면 나중에 레코드를 가져올 수 있습니다.

+0

네, 실행 유형을'Reader'로 변경하려고 시도했는데 모든 걸 망가 뜨 렸습니다.'NullReferenceException'을 가진 커스텀 툴에 관한 것이 었습니다. 나는 총을 줘, 고마워. :) – Logan