Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Membre régulier
    Inscrit en
    avril 2009
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : avril 2009
    Messages : 88
    Points : 99
    Points
    99

    Par défaut Requête dans fichier .sql

    Bonjour,

    Je travail sur l'automatisation d'une tache permettant d'extraire des données d'une base avant de les insérer dans une autre.

    Pour cela j'ai crée une requête SQL ( avec curseurs ect ..) qui fonctionne parfaitement.
    Ex une partie de la requête :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    	SET @SQL = 'UPDATE glpi_users SET '
    	SET @SQL = @SQL +  ' name =''' + @Name + ''', '
    	SET @SQL = @SQL +  ' realname =''' + REPLACE(@RealName,'''','''''') + ''', '
    	SET @SQL = @SQL +  ' mobile =''' + @Mobile + ''', '
    	SET @SQL = @SQL +  ' phone =''' + @Phone + ''', '
    	SET @SQL = @SQL +  ' usertitles_Id =' + CAST(@UserTitleId as nvarchar(20))	
    	SET @SQL = @SQL +  ' WHERE  Name = ''' + @Name + '''  ;'
    	PRINT @SQL
    qui donne comme resultat :

    Code :
    UPDATE glpi_users SET  name ='****',  realname ='*******',  mobile ='',  phone ='**** ',  usertitles_Id =**** WHERE  Name = '******'  ;

    Mon souhait est d’exécuter cette requête via mon application c# et d’insérer les résultats ( les requêtes générées ) dans un nouveau fichier SQL.

    Mon problème est que je n'arrive pas à exécuter cette requête SQL

    Systématiquement le SQLdataReader me renvoi 0 lignes.

    Voici mon code :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
       try
                {     
                SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Navision"].ConnectionString);
                conn.Open();
     
                FileInfo file = new FileInfo(@"V:\DSI\*******l");
                string query = file.OpenText().ReadToEnd();//.ReadToEnd();
     
                Console.WriteLine(query);
               // Console.ReadKey();
     
                SqlCommand cmd = new SqlCommand(query, conn);
                SqlDataReader dr = cmd.ExecuteReader();
     
     
                if (dr.HasRows)
                    while (dr.Read())
                        Console.WriteLine("\t{0}\t{1}", dr.GetString(0), dr.GetString(1));
                else
                    Console.WriteLine("No rows returned.");
                Console.ReadKey();
    Si je remplace mon fichier sql par une requête simple de type Select c'est ok , mon SQLDataReader me retourne bien des résultats.

    Pourriez vous m'aider ?
    Le SQLDATAREADER est il viable dans mon cas ?


    Cordialement

  2. #2
    Expert Confirmé

    Homme Profil pro Eric Metz
    Développeur informatique
    Inscrit en
    avril 2006
    Messages
    924
    Détails du profil
    Informations personnelles :
    Nom : Homme Eric Metz
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : avril 2006
    Messages : 924
    Points : 3 246
    Points
    3 246

    Par défaut

    Bonjour,

    Pour exécuter une requête d'Update ou d'Insert, vous ne devez pas passer par la méthode ExecuteReader mais par la méthode ExecuteNonQuery. En effet ExecuteReader n'est à utiliser que pour les requêtes "SELECT" (et c'est donc pour ca que vous obtenez des résultats dans votre test)

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •