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

[Résolu]
Signaler
Messages postés
90
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
14 juin 2010
-
Messages postés
12
Date d'inscription
lundi 14 janvier 2008
Statut
Membre
Dernière intervention
3 avril 2009
-
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

7 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
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]
Messages postés
90
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
14 juin 2010
1
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)
Messages postés
134
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
19 mai 2008
1
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
Messages postés
90
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
14 juin 2010
1
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"}
Messages postés
134
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
19 mai 2008
1
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
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
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]
Messages postés
12
Date d'inscription
lundi 14 janvier 2008
Statut
Membre
Dernière intervention
3 avril 2009
1
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.