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 :

Application C# Mise à jour bdd.


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2013
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 44
    Par défaut Application C# Mise à jour bdd.
    Bonjour à tous,

    je travaille actuellement sur une application en c# qui permets de récupérer des données d'une base de donnée Postgresql et les insère dans une autre BDD Postgresql.
    voici mon code
    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
     
    namespace insert
    {
        class Program
        {
            static void Main(string[] args)
            {
     
     
                        string connString = "DSN=pg_prd;Database=RPD;User Id=postgres;Password=*****;";
                        OdbcConnection conn = new OdbcConnection(connString);
                      OdbcCommand command = conn.CreateCommand();
                        command.CommandText = "Select etb,nobl,poidsb from t_thisdet";
                        conn.Open();
     
                       OdbcDataAdapter MyAdapter = new OdbcDataAdapter();
                        MyAdapter.SelectCommand = command;
                        DataSet dset = new DataSet("t_thisdet");
                        DataTable ds1 = new DataTable("ds1");
                        MyAdapter.Fill(ds1);
                        conn.Close();
     
     
                        string conn1String = "DSN=testing;Database=RPD;User Id=postgres;Password=****;";
                        OdbcConnection conn1 = new OdbcConnection(conn1String);
                        OdbcCommand command2 = conn1.CreateCommand();
                        conn1.Open();
                     for (int k = 1; k < ds1.Rows.Count; k++)
                        {
     
                     	string etb= ds1.Rows[k][@"etb"].ToString();
                     	string nobl = ds1.Rows[k][@"nobl"].ToString();
                     	string poidsb = ds1.Rows[k][@"poidsb"].ToString();
     
     
                           command2.CommandText="insert into hisdet values ('"+etb+"',"+nobl+","+poidsb+")";
     
     
                           command2.ExecuteNonQuery();
     
     
                     }
     
     
                        conn1.Close();
     
                    }
    Lors de mon exécution de mon code j'ai l'erreur suivante :
    System.Data.Odbc.OdbcException: ERROR [42601] ERROR: INSERT has more expressions than target columns;
    Error while executing the query

    Alors que la structure de la requête sélect est égale à la structure de la requête inserte.
    Est ce que vous avez des idées ?

    Merci de votre aide

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par mrbrams Voir le message
    Alors que la structure de la requête sélect est égale à la structure de la requête inserte.
    A priori ce n'est pas le cas, dans le SELECT tu utilises la table "T_THISDET" et dans le INSERT tu utilises "HISDET".

    Autre point, je ne pense pas que ca soit lié à ton problème ici mais il s'agit d'un conseil d'ordre général, il vaut mieux utilier les requêtes paramétrées (voir Tuto ou FAQ). Note : pour Postgresql la syntaxe pour les paramètres dans la requête SQL est ":nom" et non "@nom".

    Dernière info, il existe un provider spécifique pour Postgresql qui s'appelle Npgsql.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    avec [insert into table values ...] il faut que le values contiennent autant de valeur qu'il y a de colonnes dans la table, pas autant que la requete select que tu as fait 3 lignes au dessus

    sinon c'est insert into table (cols...) values (valeurs...)

    et je ne connais postgre, mais sur d'autres bases de données on peut relier 2 serveurs de données pour faire une requete d'insert avec un select depuis une autre base, ce qui est énormément plus rapide que de lire ligne par ligne pour faire un insert à chaque fois
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Réponses: 7
    Dernier message: 11/04/2007, 14h21
  2. Mise à jour BDD sans perdre les données
    Par penchu dans le forum Accès aux données
    Réponses: 4
    Dernier message: 07/02/2007, 11h21
  3. PreparedStatements et mise à jour BDD
    Par florentB dans le forum JDBC
    Réponses: 2
    Dernier message: 17/01/2007, 14h30
  4. [C#][VS 2005] Paramètres d'applications et mises à jour
    Par giloutho dans le forum Windows Forms
    Réponses: 1
    Dernier message: 04/04/2006, 09h38
  5. Module de Mise à jour BDD access via un site sécurisé
    Par Askarod dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/12/2005, 08h31

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