Précédent   Forum du club des développeurs et IT Pro > Dotnet > Accès aux données
Accès aux données Forum d'entraide sur les technologies d'accès aux données de Microsoft (ADO.NET, Linq, Entity Framework, etc.).
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 05/12/2012, 10h34   #1
bibifoke
Membre du Club
 
Inscription : avril 2009
Messages : 69
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 69
Points : 55
Points : 55
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
bibifoke est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2013, 10h20   #2
infosam76
Membre Expert
 
Homme Eric Metz
Développeur informatique
Inscription : avril 2006
Messages : 561
Détails du profil
Informations personnelles :
Nom : Homme Eric Metz
Âge : 36
Localisation : Belgique

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

Informations forums :
Inscription : avril 2006
Messages : 561
Points : 1 705
Points : 1 705
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)
infosam76 est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 06h55.


 
 
 
 
Partenaires

Hébergement Web