[SQL] 지정한 캐스트가 검색 중 SCOPE_IDENTITY 동안 유효하지 않습니다
SQL지정한 캐스트가 검색 중 SCOPE_IDENTITY 동안 유효하지 않습니다
나는 예외를 얻고있다 : "지정한 캐스트가 잘못되었습니다", 여기에 코드입니다
con.Open();
string insertQuery = @"Insert into Tender (Name, Name1, Name2) values ('Val1','Val2','Val3');Select Scope_Identity();";
SqlCommand cmd = new SqlCommand(insertQuery, con);
cmd.ExecuteNonQuery();
tenderId = (int)cmd.ExecuteScalar();
해결법
-
==============================
1.완전성의 이익에서 코드 샘플과 함께 세 가지 문제가있다.
완전성의 이익에서 코드 샘플과 함께 세 가지 문제가있다.
1) 당신은 ExecuteNonQuery는 및 ExecuteScalar는 호출하여 두 번 쿼리를 실행하고 있습니다. 그 결과로, 당신은 당신의 테이블에이 기능이 실행될 때마다 두 개의 레코드를 삽입합니다. 두 가지 문을하면서 당신의 SQL, 함께 실행 따라서 당신은 단지 ExecuteScalar는 호출이 필요합니다.
2) SCOPE_IDENTITY () 진수를 반환합니다. 당신도 당신의 쿼리의 결과에 Convert.ToInt32를 사용하거나 INT에 다음 소수점 반환 값을 캐스팅 할 수 있습니다.
3) 제대로 배치되도록 문을 사용하여 연결 및 명령 개체를 포장해야합니다.
using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand command = new SqlCommand(sql, connection)) { connection.Open(); int tenderId = (int)(decimal)command.ExecuteScalar(); } }
-
==============================
2.이 시도:-
이 시도:-
con.Open(); string insertQuery = @"Insert into Tender (Name, Name1, Name2) values ('Val1','Val2','Val3');Select Scope_Identity();"; SqlCommand cmd = new SqlCommand(insertQuery, con); tenderId = Convert.ToInt32(cmd.ExecuteScalar());
편집하다
제대로 그 SCOPE_IDENTITY () 숫자 (38,0)를 반환 지적되고 그것은이를해야한다 : -
tenderId = Convert.ToInt32(cmd.ExecuteScalar());
참고 : 당신은 여전히를 제거해야합니다 -
cmd.ExecuteNonQuery();
-
==============================
3.다음 첫 테스트 :
다음 첫 테스트 :
object id = cmd.ExcuteScalar()
브레이크 포인트를 설정하고 아이디의 유형을 살펴 있습니다. 그것은 아마 소수이며, 직접 int로 캐스트 할 수 없습니다.
-
==============================
4.그것은 Convert.ToInt32 (cmd.ExecuteScalar을 ())이 필요;
그것은 Convert.ToInt32 (cmd.ExecuteScalar을 ())이 필요;
from https://stackoverflow.com/questions/3027755/specific-cast-is-not-valid-while-retrieving-scope-identity by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL : 교차와 구문 오류? (0) | 2020.07.13 |
---|---|
[SQL] MySQL의 GROUP BY와 리턴 수 0 (0) | 2020.07.13 |
[SQL] SQL 빼기 정확히 년 (0) | 2020.07.13 |
[SQL] 나는 여러 테이블에서 같은 열이 있고, 특정 값으로 모든 테이블에서 해당 열을 업데이트 할. 이걸 어떻게 할 수 있습니까? (0) | 2020.07.13 |
[SQL] 어떻게 행으로 열을 선택하려면? (0) | 2020.07.13 |