IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Problemes avec SqlCommand.ExecuteNonQuery();


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 197
    Par défaut Problemes avec SqlCommand.ExecuteNonQuery();
    Bonjour,

    J'essaie tout simplement de copier des enregistrements d'une BD vers une autre. J'obtiens toujours une exception au niveau du ExecuteNonQuery() statement et je n'arrive pas à comprendre pourquoi.

    J'obtiens l'exception suivante :
    {"The parameterized query '(@a int,@b int,@c nvarchar(255),@d nvarchar(50),@e nvarchar(50),' expects the parameter '@h', which was not supplied.\r\nStatement(s) could not be prepared."}
    Pourtant, au débugger, je vois que le paramètre h est bien initialisé.

    Des suggestions?

    merci!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
     
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data.SqlClient;
    using System.Data;
     
    namespace Transfert1
    {
        class Program
        {
            static void Main(string[] args)
            {
                string connectionStringSource = "Data Source=SRVSQL2;Initial Catalog=ATE_Results;Persist Security Info=True;User ID=yy;Password=xxx";
                string connectionStringDestination = "Data Source=SRVSQL2\\DEV;Initial Catalog=ATE_Results;Persist Security Info=True;User ID=yy;Password=xxx";
     
                SqlConnection connectionSource = new SqlConnection(connectionStringSource);
                SqlConnection connectionDestination = new SqlConnection(connectionStringDestination);
     
                using (connectionSource)
                {
                    SqlCommand command = new SqlCommand("SELECT * from dbo.Result;",connectionSource);
                    connectionSource.Open();
     
                    SqlDataReader reader = command.ExecuteReader();
     
     
     
                    string str = @"insert into dbo.Result(idsResult,idsATE,strConfiguration,strWorkOrder,strTestStage,lngLapPass,lngLapFail,
                                                        lngCycleCount,lngCycleFail,lngCycleFailCriteria,lngCyclePass,lngCyclePassCriteria,
                                                        lngCyclePassBegin,
                                                        lngCyclePassBeginCriteria,lngCyclePassEnd,lngCyclePassEndCriteria) 
                                                        VALUES(@a, @b, @c, @d, @e, @f, @g, @h, @i, @j, @k, @l, @m, @n,@o, @p)";
     
     
                    connectionDestination.Open();
                    SqlCommand sqlCommand = new SqlCommand(str, connectionDestination);
     
                    sqlCommand.Parameters.Add("@a", SqlDbType.Int);
                    sqlCommand.Parameters.Add("@b", SqlDbType.Int);
                    sqlCommand.Parameters.Add("@c", SqlDbType.NVarChar,255);
                    sqlCommand.Parameters.Add("@d", SqlDbType.NVarChar,50);
                    sqlCommand.Parameters.Add("@e", SqlDbType.NVarChar,50);
                    sqlCommand.Parameters.Add("@f", SqlDbType.Int);
                    sqlCommand.Parameters.Add("@g", SqlDbType.Int);
                    sqlCommand.Parameters.Add("@h", SqlDbType.Int);
                    sqlCommand.Parameters.Add("@i", SqlDbType.Int);
                    sqlCommand.Parameters.Add("@j", SqlDbType.Int);
                    sqlCommand.Parameters.Add("@k", SqlDbType.Int);
                    sqlCommand.Parameters.Add("@l", SqlDbType.Int);
                    sqlCommand.Parameters.Add("@m", SqlDbType.Int);
                    sqlCommand.Parameters.Add("@n", SqlDbType.Int);
                    sqlCommand.Parameters.Add("@o", SqlDbType.Int);
                    sqlCommand.Parameters.Add("@p", SqlDbType.Int);
     
                    try
                    {
                        sqlCommand.Prepare();
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.ToString());
                    }
     
     
                    // Call Read before accessing data.
                    while (reader.Read())
                    {
     
                        sqlCommand.Parameters["@a"].Value = Convert.ToInt16(reader[0]);
                        sqlCommand.Parameters["@b"].Value = Convert.ToInt16(reader[1]);
                        sqlCommand.Parameters["@c"].Value = reader[2];
                        sqlCommand.Parameters["@d"].Value = reader[3];
                        sqlCommand.Parameters["@e"].Value = reader[4];
                        sqlCommand.Parameters["@f"].Value = Convert.ToInt16(reader[5]);
                        sqlCommand.Parameters["@g"].Value = Convert.ToInt16(reader[6]);
                        if (reader[7] != System.DBNull.Value)
                        {
                            sqlCommand.Parameters["@h"].Value = Convert.ToInt16(reader[7]);
                        }
                        else
                        {
                            sqlCommand.Parameters["@h"].Value = null;
                        }
     
                        sqlCommand.Parameters["@i"].Value = Convert.ToInt16(reader[8]);
                        sqlCommand.Parameters["@j"].Value = Convert.ToInt16(reader[9]);
                        sqlCommand.Parameters["@k"].Value = Convert.ToInt16(reader[10]);
                        sqlCommand.Parameters["@l"].Value = Convert.ToInt16(reader[11]);
                        sqlCommand.Parameters["@m"].Value = Convert.ToInt16(reader[12]);
                        sqlCommand.Parameters["@n"].Value = Convert.ToInt16(reader[13]);
                        sqlCommand.Parameters["@o"].Value = Convert.ToInt16(reader[14]);
                        sqlCommand.Parameters["@p"].Value = Convert.ToInt16(reader[15]);
     
                        try
                        {
                            sqlCommand.ExecuteNonQuery();
                        }
                        catch (SqlException sqlEx)
                        {
                            Console.WriteLine(sqlEx.ToString());
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.ToString());
                        }
     
                    }
     
     
                    reader.Close();
                }

  2. #2
    Membre expérimenté
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 159
    Par défaut
    Salut

    Essaye de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (reader[7] != System.DBNull.Value)
                        {
                            sqlCommand.Parameters["@h"].Value = Convert.ToInt16(reader[7]);
                        }
                        else
                        {
                            sqlCommand.Parameters["@h"].Value = DBNull.Value;
                        }
    Mais du coup tu fourni rien pour @h

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Accessoirement, il est complétement aberrant de passer par un programme externe à Sql Server pour passer des info d'un info d'un serveur Sql Server à un autre.

    Lier les deux serveurs et utiliser une requête cross-server qui sera exécutée sur l'un des deux serait infiniment plus cohérent (et plus facile à écrire).

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 197
    Par défaut
    Je suis d'accord. Ce n'est pas très élégant. Néamoins, je dois transférer tous les enregistrements d'une BD dont le schéma est inexistant et dont il n'y a pas d'intégrité référentielle vers une nouvelle avec une structure existante.

    acheo

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par acheo Voir le message
    Je suis d'accord. Ce n'est pas très élégant. Néamoins, je dois transférer tous les enregistrements d'une BD dont le schéma est inexistant et dont il n'y a pas d'intégrité référentielle vers une nouvelle avec une structure existante.
    Oui, je comprends mais en quoi le fait de faire transiter les données par un programme tiers apporte quelque chose ?

    ce que tu décrits peut parfaitement se faire via une requête unique "INSERT ... SELECT".

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 197
    Par défaut
    Je n'argumente pas avec toi. Je ne suis pas DB Admin car je dois savoir mille et une chose en avionique et la DB n'est qu'accessoire. Donc si tu as une solution, explique là en clair.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  2. Problèmes avec le filtrage des ip
    Par berry dans le forum Réseau
    Réponses: 9
    Dernier message: 30/12/2002, 07h51
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo