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

Résolu
cs_yassineee Messages postés 90 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 14 juin 2010 - 24 oct. 2007 à 11:57
fraiza Messages postés 12 Date d'inscription lundi 14 janvier 2008 Statut Membre 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

7 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 38
24 oct. 2007 à 12:05
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]
3
cs_yassineee Messages postés 90 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 14 juin 2010 1
24 oct. 2007 à 12:17
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)
0
bidou_01 Messages postés 134 Date d'inscription dimanche 1 octobre 2006 Statut Membre Dernière intervention 19 mai 2008 1
24 oct. 2007 à 13:25
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
0
cs_yassineee Messages postés 90 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 14 juin 2010 1
24 oct. 2007 à 16:59
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"}
0

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

Posez votre question
bidou_01 Messages postés 134 Date d'inscription dimanche 1 octobre 2006 Statut Membre Dernière intervention 19 mai 2008 1
25 oct. 2007 à 19:07
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
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 38
26 oct. 2007 à 06:14
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]
0
fraiza Messages postés 12 Date d'inscription lundi 14 janvier 2008 Statut Membre Dernière intervention 3 avril 2009 1
10 mars 2009 à 14:04
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.
0