Insertion de données en bloc de SQL vers Oracle à l'aide de C # .NET

L'extrait de code suivant pour l'insertion en bloc des données de la database SQL dans la database Oracle.

J'ai utilisé la procédure stockée dans la database Oracle avec 2 parameters (int et ssortingng)

Je reçois l'erreur ci-dessous lors de l'exécution de la requête. Aidez-moi s'il vous plaît à résoudre ceci. ou suggérer une bonne solution pour l'insertion de données en masse.

Ma requête

List<int> arrPersonId = new List<int>(); foreach (DataRow row in ds.Tables[0].Rows) { arrPersonId.Add(Convert.ToInt32(row["USER_ID"])); } List<ssortingng> arrPersonName = new List<ssortingng>(); foreach (DataRow row in ds.Tables[0].Rows) { arrPersonName.Add(row["USERNAME"].ToSsortingng()); } OracleConnection connection = new OracleConnection(); connection.ConnectionSsortingng = DAKObj.GetOraConnectionSsortingng(); OracleCommand command = new OracleCommand(); command.Connection = connection; command.CommandType = CommandType.StoredProcedure; command.CommandText = "sp_InsertByODPNET"; command.Parameters.Add("@PersonId", OracleDbType.Int32); command.Parameters[0].Value = arrPersonId; command.Parameters.Add("@PersonName", OracleDbType.Varchar2, 100); command.Parameters[1].Value = arrPersonName; command.ArrayBindCount = arrPersonId.Count; connection.Open(); command.ExecuteNonQuery(); connection.Close(); 

Erreur : –

Une exception de type 'System.InvalidCastException' s'est produite dans Oracle.DataAccess.dll mais n'a pas été traitée dans le code user

Informations supplémentaires: Impossible de convertir un object de type 'System.Collections.Generic.List`1 [System.Int32]' en type 'System.Array'

Le problème semble être que le fournisseur .Net n'aime pas List<int> et n'est pas assez intelligent (ou n'a pas assez d'informations) pour appeler ToArray pour get un tableau. Vous pourriez essayer quelque chose comme:

 List<int> lstPersonId = new List<int>(); foreach (DataRow row in ds.Tables[0].Rows) { lstPersonId.Add(Convert.ToInt32(row["USER_ID"])); } List<ssortingng> lstPersonName = new List<ssortingng>(); foreach (DataRow row in ds.Tables[0].Rows) { lstPersonName.Add(row["USERNAME"].ToSsortingng()); } int[] arrPersonId = lstPersonId.ToArray(); ssortingng[] arrPersonName = lstPersonName.ToArray(); OracleConnection connection = new OracleConnection(); connection.ConnectionSsortingng = DAKObj.GetOraConnectionSsortingng(); OracleCommand command = new OracleCommand(); command.Connection = connection; command.CommandType = CommandType.StoredProcedure; command.CommandText = "sp_InsertByODPNET"; command.Parameters.Add("@PersonId", OracleDbType.Int32); command.Parameters[0].Value = arrPersonId; command.Parameters.Add("@PersonName", OracleDbType.Varchar2, 100); command.Parameters[1].Value = arrPersonName; command.ArrayBindCount = arrPersonId.Length; connection.Open(); command.ExecuteNonQuery(); connection.Close(); 

Non testé sur les animaux – vous serez le premier! 🙂