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 중국어 웹사이트의 기타 관련 기사를 참조하세요!