Hello tout le monde

J'ai un petit soucis avec les connexions préparées.

En effet, je fais un petit travail en C#avec une base de données Firebird.

Cette connexion se fait via la méthode ODBC.

Pour me connecter, j'y arrive sans trop de problèmes.

Cette base de données possède les champs suivants:

Id, Titre, Auteur, Genre, Achat, Prix, Disponible.

Quand je veux effectuer une requête préparée pour connaitre que les livres dont le genre est roman,

J'effectue ceci actuellement:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
ConnectionString = @"Dsn=ContactSer;Driver={Firebird/InterBase(r) driver};dbname=chemin de ma BDD;charset=NONE;uid=SYSDBA";
            cn = new OdbcConnection(ConnectionString);
 
            cmd = new OdbcCommand();
            cmd.Connection = cn;
            cn.Open();
 
            string data = "BD";
            cmd.CommandText = "SELECT GENRE FROM BIBLIO WHERE GENRE LIKE '%"+data+"%'";
 
            cmd.ExecuteNonQuery();
            OdbcDataReader reader = cmd.ExecuteReader();
Et cela fonctionne nickel... hormis que je n'ai pas encore mis de moyen de contrôle de sécurité...

Hors j'ai vu qu'avec une requête préparée, on peut écrire ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
 
ConnectionString = @"Dsn=ContactSer;Driver={Firebird/InterBase(r) driver};dbname=Chemin de ma BDD;charset=NONE;uid=SYSDBA";
            cn = new OdbcConnection(ConnectionString);
 
            cmd = new OdbcCommand();
            cmd.Connection = cn;
            cn.Open();
 
            cmd.Parameters.Add(new OdbcParameter("@auteur", OdbcType.VarChar, 15));
            cmd.Parameters["@auteur"].Value = "BD";
 
            cmd.CommandText = "SELECT GENRE FROM BIBLIO WHERE GENRE LIKE '%@auteur%'";
 
//cmd.CommandText = "SELECT GENRE FROM BIBLIO WHERE GENRE LIKE %@auteur%";
//MessageBox.Show(cmd.CommandText);
Et là, ça ne va plus

On peut me dire ou se trouve mon erreur ?

MErci pour votre aide :-)