C# 使用数据集将 oracle 可空 int 移动到 sql 服务器可空 int
C# move oracle nullable int to sql server nullable int using dataset
我有一个 table,在 Oracle 中有一个名为 "EmployeeNumber" 的可为空的 int 字段。当我尝试使用 xsd 数据集将此值分配给 SQL 服务器中的匹配字段时,我收到无法将 null 转换为 int。
sqlEmployeeDT.AddEmployeeRow(dr.CM_REALM,
dr.CM_CO, dr.EM_FILE_NO, dr.EM_LOCATION, dr.EM_EMPNO)
在我尝试分配值 (addemployeerow) 时这似乎没有发生,但在我尝试从 Oracle (dr.EM_EMPNO) 的强类型 int 列中读取值时发生了因为 Oracle 将字段值返回为 null 但 C# 要求一个 int。
我一直在寻找答案,但一无所获。大多数答案都在谈论 null 与 DBNull.Value。但是这个问题好像是Oracle和C#之间的问题。
我可以在使用 dr.IsEm_EMPNONull() 插入之前检查 Oracle 值,但随后我面临使用 sqlEmployeeDT.AddEmployeeRow 将空值插入 SQL 服务器 int 字段,这会产生一个"can't convert null to int" 在插入语句上。
没有直接的方法吗?
这里可能会出现很多问题。您的示例没有显示足够的信息来弄清楚出了什么问题。最可能的解释是 AddEmployeeRow 方法将第五个参数定义为 int 类型,它需要一个整数,而不是 null,也不是 DBNull.Value.
您可能需要检查 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);
我有一个 table,在 Oracle 中有一个名为 "EmployeeNumber" 的可为空的 int 字段。当我尝试使用 xsd 数据集将此值分配给 SQL 服务器中的匹配字段时,我收到无法将 null 转换为 int。
sqlEmployeeDT.AddEmployeeRow(dr.CM_REALM,
dr.CM_CO, dr.EM_FILE_NO, dr.EM_LOCATION, dr.EM_EMPNO)
在我尝试分配值 (addemployeerow) 时这似乎没有发生,但在我尝试从 Oracle (dr.EM_EMPNO) 的强类型 int 列中读取值时发生了因为 Oracle 将字段值返回为 null 但 C# 要求一个 int。
我一直在寻找答案,但一无所获。大多数答案都在谈论 null 与 DBNull.Value。但是这个问题好像是Oracle和C#之间的问题。
我可以在使用 dr.IsEm_EMPNONull() 插入之前检查 Oracle 值,但随后我面临使用 sqlEmployeeDT.AddEmployeeRow 将空值插入 SQL 服务器 int 字段,这会产生一个"can't convert null to int" 在插入语句上。
没有直接的方法吗?
这里可能会出现很多问题。您的示例没有显示足够的信息来弄清楚出了什么问题。最可能的解释是 AddEmployeeRow 方法将第五个参数定义为 int 类型,它需要一个整数,而不是 null,也不是 DBNull.Value.
您可能需要检查 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);