[débutant]souci avec une requetes paramétré [Résolu]

Messages postés
90
Date d'inscription
lundi 26 juillet 2004
Dernière intervention
14 juin 2010
- 24 oct. 2007 à 11:57 - Dernière réponse :
Messages postés
12
Date d'inscription
lundi 14 janvier 2008
Dernière intervention
3 avril 2009
- 10 mars 2009 à 14:04
Salut , je ne sais pas la syntaxe pour écrire ce genre de requête :
sqlhelper.executeNonquery(connect,CommandType.text,"select nom from salarie where idsalarie="+param1)
NB:sqlhelper est une classe qui marche bien et se connecte avec la base de donnée.
le programme me retourn -1 par contre il faut qu'il me retourne un nom
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
- 24 oct. 2007 à 12:05
3
Merci
Bonjour,

d'une : il faut utiliser ExecuteScalar
de deux : http://www.csharpfr.com/tutoriaux/UTILISATION-REQUETES-PARAMETREES-AVEC-ADO-NET_709.aspx

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]

Merci sebmafate 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de sebmafate
Messages postés
90
Date d'inscription
lundi 26 juillet 2004
Dernière intervention
14 juin 2010
- 24 oct. 2007 à 12:17
0
Merci
merci ca marche pour un paramétre (int) et vous avez raison  pour la syntaxe mais la je vient d'inverser la requete de la facon suivante mais ca marche pas

string param1="scott"

sqlhelper.executeNonquery(connect,CommandType.text,"select idsalarie from salarie where nom="+param1.Tostring)
Commenter la réponse de cs_yassineee
Messages postés
135
Date d'inscription
dimanche 1 octobre 2006
Dernière intervention
19 mai 2008
- 24 oct. 2007 à 13:25
0
Merci
Bonjour,

Utilise la méthode que Sebmafate donne dans son tutoriel

>
SqlCommand cmd = new SqlCommand(maConnection);
string sql "select idsalarie from salarie where nom @nom";
cmd.CommandType = Text;
cmd.CommandText = sql;
DbParameter param = cmd.CreateParameter();
param.ParameterName = "@nom";
param.DbType = DbType.String;
param.Value = "scott";

cmd.Parameters.Add(param);

int idSalarie = -1;

object result = cmd.ExecuteScalar();
if(result != null)
      idSalarie = Convert.ToInt32(result);
   
Cordialement,

Bidou_01 

<hr />http://blog.corioland.eu
Commenter la réponse de bidou_01
Messages postés
90
Date d'inscription
lundi 26 juillet 2004
Dernière intervention
14 juin 2010
- 24 oct. 2007 à 16:59
0
Merci
ok merci ca marche j'ai d'autre questions si vous permettez :) maintenant avec une base de donnée oracle j'ai fais ca :

 string connect = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        string var1 = "nom1";
        OracleConnection con = new OracleConnection(connect);
          //requete 
  con.Open(); OracleCommand command new OracleCommand("select idclient  from client where" + " nom @var1" , con);
 command.Parameters.Add(new OracleParameter("@var1", OracleType.VarChar,100));
        command.Parameters["@var1"].Value = var1.ToString();
        OracleDataReader reader = command.ExecuteReader();
        reader.Read();
        TextBox1.Text = reader[0].ToString();
        reader.Close();
        con.Close();
NB la describtion de la table client est :
idclient:numeric
nom:varcahar2(30)
le compilateur s'arrete dans cette ligne
 OracleDataReader reader = command.ExecuteReader();
et me met l'exception suivante:{"ORA-01036: numéro/nom de variable illégal\n"}
Commenter la réponse de cs_yassineee
Messages postés
135
Date d'inscription
dimanche 1 octobre 2006
Dernière intervention
19 mai 2008
- 25 oct. 2007 à 19:07
0
Merci
Bonsoir,

Par simple curiosité, essaye voir (même si c'est mal !) d'écrire ta requête comme cela :

string connect = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        string var1 = "nom1";
        OracleConnection con = new OracleConnection(connect);
          //requete 
  con.Open(); OracleCommand command new OracleCommand("select idclient  from client where nom "+var1.ToString()+"" , con);

        OracleDataReader reader = command.ExecuteReader();
        reader.Read();
        TextBox1.Text = reader[0].ToString();
        reader.Close();
        con.Close();

J'ai déjà eu des problèmes de ce genre , mais jamais trouvé de solution... à part passer par des procédures stockées!

Cordialement,

Bidou_01 

<hr />http://blog.corioland.eu
Commenter la réponse de bidou_01
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
- 26 oct. 2007 à 06:14
0
Merci
non non...
ca marche mieux comme cela :

string connect = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        OracleConnection con = new OracleConnection(connect);
          //requete 
  con.Open(); OracleCommand command new OracleCommand("select idclient  from client where nom ?" , con);
 command.Parameters.Add(new OracleParameter("nom", OracleType.VarChar,100));
        command.Parameters["nom"].Value = var1.ToString();
        OracleDataReader reader = command.ExecuteReader();
        reader.Read();
        TextBox1.Text = reader[0].ToString();
        reader.Close();
        con.Close();

Attention : pour oracle les paramètres doivent être créés dans l'ordre de la requête/procédure.

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Commenter la réponse de sebmafate
Messages postés
12
Date d'inscription
lundi 14 janvier 2008
Dernière intervention
3 avril 2009
- 10 mars 2009 à 14:04
0
Merci
Salut, j'ai une pb d'afficher des donnees de la base ds une fenetre (je travaille avec c# et la base mysql)
j'ai essaye avec ce code mais c ps marché:

" String _champcle = _stockvar.prochain_cod_ot();
            String partie = "substring(" + _champcle + ",locate('/'," + _champcle + ")+1,4)";
            String annee = "substring(" + _champcle + ",locate('/'," + _champcle + ")-2,2)";
            String code = "DI" + " " + " SF" + " " + annee + "/" + partie;
            ArrayList lignes, ligne;
               
                lignes = _db.RetrieveData("select num_di, cod_cca, cod_zone , cod_service , cod_equipement from gm_demande_intervention where num_di='" + code+ "'");
                if (lignes.Count > 0)
                {
                    ligne = (ArrayList)lignes[0];
                    vot.Text = ligne[0].ToString();

                    vcca.Text = ligne[1].ToString();
                    vzone.Text = ligne[2].ToString();
                    vservice.Text = ligne[3].ToString();
                    vmachine.Text = ligne[4].ToString();    }"

la methode prochain_cod_ot() est une methode ki retourne un code de la forme

OT SF 09/000x
x est incrimental
et je veu afficher les donnees ki correspend à ce code :"DI SF 09/000x"
svp aidez moi.
Commenter la réponse de fraiza

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.