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 :

insert avec deux bases sql server.


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 133
    Points : 47
    Points
    47
    Par défaut insert avec deux bases sql server.
    Bonjour à tous,


    j'ai 2 bases sur le meme serveur:

    base DB1 ; schéma SCH1; table T(Id,Nom ,Code)
    base DB2 ; schéma SCH2 ; table T(Id,Nom ,Code)

    je voudrais executer la requete suivante à partie de C#:
    (inserer les lignes de T de la base DB2 avec le schema SCH2
    dans DB1)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    REQ  =  " INSERT INTO DB1.SCH1.T(Id,Nom ,Code)
     
                 SELECT  Id ,Nom ,Code  
     
                 FROM DB2.SCH2.T    "
    j'ai fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    string connectString = "Data Source=.\\SQLEXPRESS;Initial Catalog=DB1;Integrated Security=True";
     
     SqlConnection connection =new  SqlConnection(connectString);
     SqlCommand sql = new SqlCommand(REQ,connection);
    le pb: comment utiliser la connection pour la base DB2 ?
    dois je recuperer d'abord les valeurs du select et puis parametrer
    la requete insert avec les valeurs trouvées?

    Merci de votre aide.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 174
    Points : 25 115
    Points
    25 115
    Par défaut
    ta requete est censé fonctionner en l'état
    dans une chaine de connexion sql server on est pas obligé de spécifier la base de données à utiliser, on peut les utiliser toutes (la spécifier permet de ne pas préfixer)

    quant à lire les données pour refaire des insert ca mettrais des milliers de fois plus de temps que de laisser sql server le faire

  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 : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    ta requete est censé fonctionner en l'état
    dans une chaine de connexion sql server on est pas obligé de spécifier la base de données à utiliser, on peut les utiliser toutes (la spécifier permet de ne pas préfixer)
    Je plussoye et j'ajouterais que c'est bien pour cela que la propriété s'appelle "Initial Catalog", ce qui sous entend que ce n'est pas le seul "Catalog" qu'on peut utiliser dans la connexion.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 133
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    ta requete est censé fonctionner en l'état
    dans une chaine de connexion sql server on est pas obligé de spécifier la base de données à utiliser, on peut les utiliser toutes (la spécifier permet de ne pas préfixer)

    quant à lire les données pour refaire des insert ca mettrais des milliers de fois plus de temps que de laisser sql server le faire
    Merci.
    On m'a demandé de le faire en C# pour le moment , je vais discuter avec l'architecte à son retour.

    mais dans la chaine de connexion il faut donner le nom de la base! non?


    j'ai resolu le probleme en ajoutant une deuxième connection pour la base DB2 comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string connectString2 = "Data Source=.\\SQLEXPRESS;Initial Catalog=DB2;Integrated Security=True";
    SqlConnection connection2 =new SqlConnection(connectString2);
    connection2.open() ;
    j'ai ouvert cette connexion pour que le select sur cette base soit executé et ça a marché.
    Par contre est ce que c'est justifié ou j'aurai pu faire mieux.
    je ne sais pas.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 174
    Points : 25 115
    Points
    25 115
    Par défaut
    j'ai pourtant été clair dans ce que je dis !

    IL N'EST PAS OBLIGATOIRE DE PRECISER LE NOM DE LA BASE DANS LA CHAINE DE CONNEXION
    (relis plusieurs fois mon post ...)
    pour sql server il suffit d'indiquer comment trouver l'instance du moteur (ip, nom d'instance, mode d'authentification), après il y a des dizaines de paramètres optionnels dont le nom de la base

    de plus l'objet command demande un objet connexion pour s'exécuter, en ouvrir une deuxième non associée (vu qu'on ne peut en associer qu'une) c'est du vent !


    en gros tu avais le bon code, mais tu as préféré poster plutôt que de le tester ...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 133
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    j'ai pourtant été clair dans ce que je dis !

    IL N'EST PAS OBLIGATOIRE DE PRECISER LE NOM DE LA BASE DANS LA CHAINE DE CONNEXION
    (relis plusieurs fois mon post ...)

    de plus l'objet command demande un objet connexion pour s'exécuter, en ouvrir une deuxième non associée (vu qu'on ne peut en associer qu'une) c'est du vent !


    en gros tu avais le bon code, mais tu as préféré poster plutôt que de le tester ...
    je viens de tester , tu as raison une seule connection ouverte suffit.
    merci.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 133
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par solitude Voir le message
    je viens de tester , tu as raison une seule connection ouverte suffit.
    merci.
    en fait j'ai testé mais l'erreur venait des champs de la requete que j'ai mal ecris et j'ai cru que l'erreur venait de la connection.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 133
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par solitude Voir le message
    je viens de tester , tu as raison une seule connection ouverte suffit.
    merci.
    effectivement pas la peine de donner le nom de la base de données.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 133
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par solitude Voir le message
    effectivement pas la peine de donner le nom de la base de données.
    merci Pol.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 174
    Points : 25 115
    Points
    25 115
    Par défaut
    en cas d'erreur, il y a un message qui à part quand il vient d'access est assez explicite ^^

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

Discussions similaires

  1. Synchronisation de deux bases sql server 2000
    Par Rosa2008 dans le forum Outils
    Réponses: 2
    Dernier message: 11/07/2008, 17h05
  2. Réponses: 0
    Dernier message: 22/02/2008, 12h04
  3. Réponses: 1
    Dernier message: 03/08/2007, 07h55
  4. Connexion à deux bases SQL server
    Par gatsu07 dans le forum Access
    Réponses: 1
    Dernier message: 29/08/2006, 15h40
  5. [J2EE/JSP] Gestion des erreurs avec une base SQL server 2005
    Par critok dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 30/04/2006, 16h57

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