Select INTO avec variables

SaiYan5102 Messages postés 69 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 15 mars 2011 - 11 déc. 2009 à 11:58
SaiYan5102 Messages postés 69 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 15 mars 2011 - 11 déc. 2009 à 14:34
Bonjour,

Je désire récupérer la valeur de certains champs se trouvant dans une table d'une base de donnée SQL server. Ces valeurs j souhaites les stocker dans des variables C#.

J'écris donc cela :

string Demandeur = "";
string Matricule = "";

_connection.ConnectionString = _connectionString;
_connection.Open();
DbCommand _command = _providerFactory.CreateCommand();
_command.Connection = _connection;
_command.CommandText "SELECT numero, matricule INTO " + Demandeur + ", " + Matricule + " FROM annuaire_new WHERE login" + login;

DbDataReader reader = _command.ExecuteReader();


Je parviens bien à me connecter à la base et tout ca pas de soucis, mais j'obtiens cette erreur à l'execution :

Incorrect syntax near ','. Cette erreur est sur la ligne du reader. Mais si je remplace ma requête par un simpe SELECT ou un INTO ca fonctionne donc l'erreur viens bien de ma requête.

On peut bien stocker des valeurs de champs dans des variables comme ceci non ? Une erreur de syntaxe ? Car personnellement je n'en vois pas.

5 réponses

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
11 déc. 2009 à 12:19
Salut

Sais-tu exactement ce à quoi sert "INTO" ? Ce n'est pas fait pour attribuer la valeur à une variable. C'est fait pour créer une nouvelle table.

Donc si tu veux récupérer ces valeurs, il va falloir que tu utilises un reader, comme ceci :

_command.CommandText "SELECT numero, matricule FROM annuaire_new WHERE login" + login;
DbDataReader reader = _command.ExecuteReader();
if(reader.Read()) // S'il y a au moins une ligne
{
    Demandeur = reader["numero"].ToString();
    Matricule = reader["matricule"].ToString();
}


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé ! -
0
Miltiades Messages postés 233 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 octobre 2010
11 déc. 2009 à 12:46
Je suis d'accord avec l'intervention de krimog, sauf sur un point, le select into peut etre utilisé pour stocker des données dans des variables, mais dans le cas (unique il me semble) ou tu fais ce select dans une procedure stockée et donc que les variables en question sont des variables plsql...
ce qui n'est de toute evidence pas le cas ici ^^

Nul ne devient grand par la guerre...
0
SaiYan5102 Messages postés 69 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 15 mars 2011 1
11 déc. 2009 à 13:10
Voilà exactement je sais que en PL/SQL ca se fait de stocker dans des variables avec un SELECT INTO mais j'étais pas sur que en SQL on pouvait. Je vous remercie pour vos réponses.

Merci Krimog de répondre toujours aussi vite et si précisémment.
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
11 déc. 2009 à 14:23
Ah, je ne savais pas pour les variables PLSQL.

Alors ce que tu peux essayer (mais je ne garantis ABSOLUMENT rien) :

_command.CommandText = "SELECT numero, matricule INTO @Numero, @Matricule FROM ...";
SqlParameter num = new SqlParameter("@Numero", SqlDbType.VarChar);
num.Direction = ParameterDirection.Output;
SqlParameter mat = new SqlParameter("@Matricule", SqlDbType.VarChar);
mat.Direction = ParameterDirection.Output;
_command.Parameters.Add(num);
_command.Parameters.Add(mat);

_command.ExcuteReader();

Demandeur = num.Value;
Matricule = mat.Value;


PS : Je ne sais pas quelle bibliothèque tu utilises, mais il faudra peut-être utiliser des DbParameter.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé ! -
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SaiYan5102 Messages postés 69 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 15 mars 2011 1
11 déc. 2009 à 14:34
Non mais krimog ce que tu m'as dis en premier fonctionne très bien donc je garde cela :)

ps : Cependant je traine toujours mon problème d'évènements sur mon calendrier, j'irai tenter de préciser mon soucis dans le post concerné.
0
Rejoignez-nous