2013-11-09 4 views
1

누가 아래 질문으로 문제를 알려 주실 수 있습니까? 나는 MS 액세스에서 실행하고하고는MS 액세스 @@ 신원 쿼리 문제

을 제공

코드 쿼리 식 'ID = @@ IDENTITY'에서

구문 오류 :

public DosageBO SaveDosage(DosageBO dosage) 
{ 
    try 
    { 
     using (IDbConnection connection = OpenConnection()) 
     { 
     StringBuilder sql = new StringBuilder(); 
     sql.AppendLine("INSERT INTO dosage_master (medicine_type, dosage, remarks, updateby, updatedate)"); 
     sql.AppendLine("VALUES (@type, @dose, @remarks, @updateby, NOW());"); 

     var parameters = new 
        { 
         type = dosage.MedicineType, 
         dose = dosage.Dosage, 
         remarks = dosage.Remarks, 
         updateby = Environment.UserName 
        }; 

     connection.Execute(sql.ToString(), parameters); 

     return connection.Query<DosageBO>("SELECT medicine_type as MedicineType, dosage, remarks FROM dosage_master WHERE id = @@IDENTITY").FirstOrDefault(); 
     } 
    } 
    catch 
    { 
     throw; 
    } 
} 

답변

1

SELECT @@Identity는 전문 쿼리입니다 하위 쿼리에 둘러싸보십시오. 그리고 @@Identity은 해당 상황에서만 유효합니다. 다른 곳에서 @@Identity을 사용하려고 시도하면 WHERE 절과 같이 db 엔진이 오류를 발생시킵니다.

SELECT @@Identity에서 값을 검색하여 저장하고 다른 쿼리에서이 저장된 값을 사용해야합니다.

+0

의미가 있습니다. 감사 – techknackblogs

0

최종

에서 )를 제거
WHERE id = @@IDENTITY) 
        ^---here 
+0

여전히 동일한 문제가 있습니다. – techknackblogs

+0

나는 Access DB의 짧은 등장을 생각한다. – techknackblogs

0

검색어를 선택하기 전에이 배치에 행을 삽입하고 있습니까? 내 지식으로 @@ IDENTITY는 신원 값을 생성하는 행을 삽입 한 직후에만 사용할 수 있습니다. 즉, 자동 증분 항등 열에 삽입됩니다.

편집 다시 : 예컨대 id = (SELECT @@IDENTITY)

+0

예 행을 삽입하고 자 동 번호 이후로 @@ ID를 사용하여 마지막 ID를 가져오고 동일한 테이블을 다시 쿼리하여 모든 데이터를 가져옵니다. – techknackblogs

+0

더 많은 코드를 게시하십시오. –

+0

전체 코드가 추가되었습니다 – techknackblogs