내 MSSQL 데이터베이스에 입력 된 데이터 세트에서 데이터를 삽입() SqlBulkCopy.WriteToServer에서 SqlDateTime 오버 플로우를 가져 오기 : 그것은 위대한 작품을SqlBuldCopy 클래스를 사용하여
foreach (DataTable dt in ds.Tables)
{
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn))
{
bulkCopy.DestinationTableName = "dbo." + dt.TableName + "_neu";
try
{
bulkCopy.WriteToServer(dt);
}
catch (Exception ex)
{
throw new FaultException("\n" + dt.TableName + ": " + ex.Message);
}
}
}
. 그러나 내 데이터베이스에 DataTime.MinValue 삽입 할 때이 오류가 발생합니다 : SqlDateTime 오버플로. 1/1/1753 12:00:00 AM과 12/31/9999 오후 11:59:59 사이 여야합니다. foreach에서 이런 식으로 말할 수있는 방법이 있습니까? 데이터 집합의 DateTime 필드 값이 DateTime.MinValue 인 경우 데이터 집합의 DateTime 필드를 데이터베이스에 삽입하지 마십시오.
안부
답장을 보내 주셔서 감사합니다. 나는 데이터 테이블의 인구를 제어하지 않는다. 데이터베이스를 웹 서비스에서 가져옵니다. bulkCopy.WriteToServer (dt) 전에 어떻게 확인할 수 있습니까? DateTime 필드가 DateTime.MinValue가 아닌 경우? 참이면 DBNull을 데이터베이스에 저장하십시오. –
각 행을 반올림하고 DateTime.MinValue가있는 모든 DateTime 필드를 변경할 수 있습니다. – AdaTheDev