Précédent   Forum des professionnels en informatique > Bases de données > Autres SGBD > SQLite
SQLite Forum d'entraide SQLite
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/05/2011, 19h06   #1
Invité de passage
 
Inscription : février 2009
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 15
Points : 1
Points : 1
Par défaut Requête paramétrée sqlite c#

bonjour, je fais un petit programme sous visual studio mais je n'arrive

pas à utiliser les requêtes paramétrées pour insérer des variables dans

ma requête SELECT... comme je viens de lire ici http://sqlite.phxsoftware.com/forums/t/83.aspx

quelqu'un peut me dire comment procéder et d'où vient le problème ?


Code :
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
 string fruit= "pomme",couleur="vert";
 
 
 
 
 USING (SQLiteCommand ObjConnCmd1 = ObjConnection.CreateCommand())
                {
 
                     ObjConnCmd1.CommandText = @"SELECT @str1  FROM   @str2  WHERE couleur = @str3  ; " ;
 
                      SQLiteParameter str1 = new SQLiteParameter("@str1");
                      SQLiteParameter str2 = new SQLiteParameter("@str2");
                      SQLiteParameter str3 = new SQLiteParameter("@str3");     
 
                      ObjConnCmd1.Parameters.AddWithValue("@str1", couleur);
                      ObjConnCmd1.Parameters.AddWithValue("@str2", fruit);
                      ObjConnCmd1.Parameters.ADD("@str3");
 
 
 
                foreach (DataRow row IN DataTable2.Rows)
                {
                    str3.Value = row[0].ToString();
 
                   ...
                    ObjConnCmd1.ObjConnectionCmd1.ExecuteNonQuery();
                  ...
 
                }

le problème est que je me retrouve avec erreur de syntaxe near @str2

ce texte en gros au lieu d'etre remplacé avant l'exécution par la valeur ne l'est pas ...
athlon64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 08h25   #2
Membre éprouvé
 
Inscription : janvier 2009
Messages : 301
Détails du profil
Informations personnelles :
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2009
Messages : 301
Points : 454
Points : 454
Bonjour,

J'ai lu ton article rapidement, à mon avis ton erreur provient de la table passé en paramètre.
Code :
ObjConnCmd1.CommandText = @"SELECT @str1  FROM   @str2  WHERE couleur = @str3  ; " ;
Il n'est pas possible de passer le nom d'une table par paramètre. Il faut présenter ta requête ainsi :

Code :
ObjConnCmd1.CommandText = @"SELECT @str1  FROM   NomTable  WHERE couleur = @str3  ; " ;
Maintenant, si tu veux changer le nom de la table à chaque requête, il te faut inclure, dans ton programme, une procédure adaptée.

A+
seabs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 21h30   #3
Invité de passage
 
Inscription : février 2009
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 15
Points : 1
Points : 1
Citation:
Envoyé par seabs Voir le message
Bonjour,
...

Il n'est pas possible de passer le nom d'une table par paramètre. Il faut présenter ta requête ainsi :

Code :
ObjConnCmd1.CommandText = @"SELECT @str1  FROM   NomTable  WHERE couleur = @str3  ; " ;

...
A+
merci pour ta réponse, je n'ai pas encore testé mais au moins ça fait plaisir d'avoir quelque chose d'autre à essayer...

J'avais essayé toutes les combinaisons possibles dans ma requête... là tu me calmes mon mal de tête. Je te tiens au courant du résultat
athlon64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 22h02   #4
Invité de passage
 
Inscription : février 2009
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 15
Points : 1
Points : 1
bravo seabs tu as vu juste !

c'était ça le problème, la table ne pouvait pas être passée en paramètre.

Dans ce cas je vais faire un switch case (nomTable) et écrire 4 SELECT.

Je trouve sqlite très intéressant auriez vous quelques liens ou livres à me conseiller en français s'il en existe...
athlon64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 09h10   #5
Membre éprouvé
 
Inscription : janvier 2009
Messages : 301
Détails du profil
Informations personnelles :
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2009
Messages : 301
Points : 454
Points : 454
Bonjour,

J'ai lu ta demande.

Tu sais, j'utilise sqlite très rarement. Mes développement sont faits, pour l'essentiel, avec Firebird et SQL Server. Donc, je n'ai aucune documentation pour sqlite en dehors du site officiel qui est en anglais.

Il faut dire que globalement, il est proche des autres bases car il offre un moteur supportant le standard SQL-92, d'où une écriture des requêtes identiques aux autres DBA.

Toutefois, j'ai trouvé ce lien qui fait une traduction partielle de la documentation du site en français. Il me semble un peu en panne, mais tu as la syntaxe des fonctions SQL traduite en français et quelques autres points. Tout n'est pas traduit, mais cela peut te rendre service. L'adresse est :

http://sqlite.perso.sfr.fr/

Pour plus, il faut attendre les spécialiste de Sqlite.

A+
seabs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 22h16   #6
Invité de passage
 
Inscription : février 2009
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 15
Points : 1
Points : 1
merci pour ta réponse. J'avais rajouté ce site à mes favoris sans jamais

remarquer qu'il était très bien.

encore merci pour tes conseils.
athlon64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h49.


 
 
 
 
Partenaires

Hébergement Web