C#에서 삽입된 행의 ID를 검색할 때 ExecuteScalar()가 0을 반환하는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-08 09:48:02
원래의
396명이 탐색했습니다.

Why Does ExecuteScalar() Return 0 When Retrieving the ID of an Inserted Row in C#?

C#에서 삽입된 행의 ID 검색

데이터베이스 테이블에 새 데이터를 삽입할 때 새로 생성된 행의 ID를 캡처합니다. 후속 처리에 필수적일 수 있습니다. 이 문서에서는 삽입된 행 ID를 얻기 위해 ExecuteScalar()를 사용하면 실제 ID가 0이 아닌 경우에도 일관되게 0을 반환하는 일반적인 문제를 살펴봅니다.

제공된 코드 블록:

MySqlCommand comm = connect.CreateCommand();
comm.CommandText = insertInvoice;
comm.CommandText += "\'" + invoiceDate.ToString("yyyy:MM:dd hh:mm:ss") + "\', " + bookFee + ", " + adminFee + ", " + totalFee + ", " + customerID +  ")";
int id = Convert.ToInt32(comm.ExecuteScalar());
로그인 후 복사

insert 문을 실행하고 ExecuteScalar()를 사용하여 생성된 ID를 검색하려고 시도합니다. 그러나 이 접근 방식은 스칼라가 아닌 컨텍스트에서 ExecuteScalar() 메서드의 예측 불가능성으로 인해 일반적으로 실패합니다.

삽입된 행의 ID를 안정적으로 검색하려면 다음 코드를 사용할 수 있습니다.

MySqlCommand comm = connect.CreateCommand();
comm.CommandText = insertStatement;
comm.ExecuteNonQuery();
long id = comm.LastInsertedId;
로그인 후 복사

ExecuteNonQuery()를 사용하여 삽입 문을 실행한 후 최근 삽입된 행에 대해 생성된 ID를 제공하는 명령 개체의 LastInsertedId 속성에 액세스할 수 있습니다. 삽입된 행 ID를 안정적으로 검색하려면 이 방법을 권장합니다.

또한 삽입된 ID를 검색하는 MySQL 구문(last_insert_id())은 C#에서 지원되지 않습니다. 대신 LastInsertedId를 MySqlCommand 개체의 일부로 사용하여 생성된 ID를 얻을 수 있습니다.

위 내용은 C#에서 삽입된 행의 ID를 검색할 때 ExecuteScalar()가 0을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿