2016-06-07 6 views
0

Ich habe eine Tabelle mit einem Nullable Int-Feld in Oracle namens "EmployeeNumber". Wenn ich versuche, diesen Wert zu seinem übereinstimmenden Feld in SQL Server mit einem Xsd-Dataset zuzuweisen, kann ich nicht null in int konvertieren.C# Orakel Nullable Int in Sql-Server Nullable Int mit Dataset

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

Dies scheint nicht an dem Punkt, der Fall zu sein Ich versuche, den Wert (addemployeerow) ist es passiert zuzuweisen, wenn ich versuche, den Wert, in einer stark typisierten int Spalte von Oracle (dr.EM_EMPNO) zu lesen weil Oracle den Feldwert als null zurückgibt, aber C# einen int fordert.

Ich habe nach einer Antwort gesucht, kann aber nichts finden. Die meisten Antworten sprechen über null vs DBNull.Value. Aber dieses Problem scheint zwischen Oracle und C# zu liegen.

Ich kann den Oracle-Wert vor dem Einfügen mit Dr.IsEm_EMPNONull() überprüfen, aber dann bin ich konfrontiert mit dem Einfügen der Null in ein SQL Server-Feld int mit sqlEmployeeDT.AddEmployeeRow, die eine "kann nicht in int konvertiert werden" auf der Insert-Anweisung.

Gibt es keine direkte Möglichkeit, dies zu tun?

Antwort

1

Hier könnte eine Reihe von Dingen schiefgehen. Ihr Beispiel zeigt nicht genug Informationen, um deutlich zu machen, was falsch läuft. Die wahrscheinlichste Erklärung ist, dass die AddEmployeeRow-Methode den fünften Parameter als Typ int definiert hat, der eine Ganzzahl, keinen Nullwert und keinen DBNull.Value erfordert.

Sie können sqlEmployeeDT.Columns ["EM_EMPNO"]. AllowDBNull überprüfen, um sicherzustellen, dass dies zutrifft.

Ein alternativer Ansatz könnte zu verwenden sein

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

Ich war fast bereit, den Stecker auf diesen Ansatz zu ziehen. Berts alternativer Ansatz funktioniert wie ein Zauber. Ich habe meine Frage auf eine Million verschiedene Arten gesehen und gesehen, dass sie genauso beantwortet hat. Diese Antwort ist diejenige, die ich brauchte. – EllieK

Verwandte Themen