2016-06-07 24 views
0

"EmployeeNumber"라는 Oracle에서 nullable int 필드가있는 테이블이 있습니다. xsd 데이터 집합을 사용하여 SQL Server의 해당 필드에이 값을 할당하려고하면 null을 int로 변환 할 수 없습니다. 나는 오라클 (dr.EM_EMPNO)에서 강력한 형식의 INT 열에서 값을 읽을 때C# oracle nullable int to SQL 서버 nullable int 데이터 집합을 사용하여

sqlEmployeeDT.AddEmployeeRow(dr.CM_REALM, 
dr.CM_CO, dr.EM_FILE_NO, dr.EM_LOCATION, dr.EM_EMPNO)                    

이것은 일어나고있어 내가 값 (addemployeerow)를 할당하려고 지점에서 발생하지 않는 것으로 왜냐하면 오라클은 필드 값을 null로 반환하지만 C#은 int를 요구하기 때문입니다.

답변을 찾았지만 찾을 수 없습니다. 대부분의 대답은 null 대 DBNull.Value에 대해 이야기하고 있습니다. 하지만이 문제는 오라클과 C# 사이 인 것으로 보입니다.

dr.IsEm_EMPNONull()을 사용하여 삽입하기 전에 Oracle 값을 확인할 수 있지만 SQL Server int 필드에 null을 int에 변환 할 수없는 sqlEmployeeDT.AddEmployeeRow를 사용하여 null을 삽입해야합니다. insert 문에서.

이 작업을 수행하는 간단한 방법은 없습니까?

답변

1

여기에 여러 가지 문제가있을 수 있습니다. 귀하의 예는 무엇이 잘못되었는지 명확히 알 수있는 충분한 정보를 보여주지 못합니다. 가장 가능성있는 설명은 AddEmployeeRow 메서드에 int 유형으로 정의 된 다섯 번째 매개 변수가 있다는 것입니다.이 매개 변수에는 DBNull.Value가 아니라 null이 아닌 정수가 필요합니다.

sqlEmployeeDT.Columns [ "EM_EMPNO"], AllowDBNull을 확인하여 이것이 맞는지 확인할 수 있습니다.

다른 방법은

DataRow row = sqlEmployeeDT.NewRow(); 
row["CM_REALM"] = dr.CM_REALM; //etc. 
row["EM_EMPNO"] = DBNull.Value; 
sqlEmployeeDT.Rows.Add(row); 
+0

나는이 방법에 플러그를 당겨 거의 준비가 사용할 수 있습니다. Bert의 대안은 매력처럼 작동합니다. 나는 내 질문이 백만 가지 방법으로 게시 된 것을보고 많은 사람들이 답변 한 것을 보았다. 이 대답은 내가 필요한 것입니다. – EllieK