2016-06-07 6 views
0

J'ai une table avec un champ int nullable dans Oracle nommé "EmployeeNumber". Lorsque je tente d'affecter cette valeur à son champ correspondant dans SQL Server à l'aide d'un jeu de données xsd, je reçois un ne peut pas convertir null en int.C# déplacer oracle nullable int vers sql server nullable int à l'aide du dataset

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

Cela ne semble pas être le cas au point où je tente d'affecter la valeur (addemployeerow) ce qui se passe lorsque je tente de lire la valeur, dans une colonne int fortement typé, d'Oracle (dr.EM_EMPNO) car Oracle retourne la valeur du champ comme nulle mais C# demande un int. J'ai cherché une réponse mais je ne trouve rien du tout. La plupart des réponses parlent de null vs DBNull.Value. Mais ce problème semble être entre Oracle et C#.

Je peux vérifier la valeur Oracle avant d'insérer en utilisant dr.IsEm_EMPNONull() mais je suis confronté à l'insertion de la null dans un champ SQL Server int en utilisant sqlEmployeeDT.AddEmployeeRow qui produit un "impossible de convertir null en int" sur l'instruction d'insertion.

Y a-t-il un moyen simple de le faire?

Répondre

1

Il pourrait y avoir un certain nombre de choses qui ne vont pas ici. Votre exemple ne montre pas assez d'informations pour clarifier ce qui ne va pas. L'explication la plus probable est que la méthode AddEmployeeRow a le cinquième paramètre défini comme type int, ce qui nécessite un entier, pas un null, et pas un DBNull.Value.

Vous pouvez vérifier sqlEmployeeDT.Columns ["EM_EMPNO"]. AllowDBNull pour vous assurer que cela est vrai.

Une autre approche pourrait consister à utiliser

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

j'étais presque prêt à tirer le bouchon sur cette approche. L'approche alternative de Bert fonctionne comme un charme. J'ai vu ma question publiée de millions de façons différentes et j'ai vu qu'elle répondait tout autant. Cette réponse est celle dont j'avais besoin. – EllieK