cs_plateau
Messages postés19Date d'inscriptionlundi 18 février 2008StatutMembreDernière intervention 3 juillet 2008
-
25 juin 2008 à 16:01
cs_plateau
Messages postés19Date d'inscriptionlundi 18 février 2008StatutMembreDernière intervention 3 juillet 2008
-
3 juil. 2008 à 19:46
Bonjour à tous
J’essai de faire un petit moteur de recherche pour une base
de donnée,
Je récupère ce qui a été tapé dans le textBox de recherche, je le découpe
et puis avec chaque mot je fais une
recherche dans la BD
Mon code est le suivant :
OleDbConnection
connection = newOleDbConnection();
connection.ConnectionString = "cnx";
connection.Open();
int i;
string searchText;
searchText =
txtSearch.Text;
string[] sep_result = searchText.Split(' ');
for(i=0;
i<sep_result.Length;i++)
{
OleDbDataAdapter
da = newOleDbDataAdapter("SELECT
* FROM matable WHERE COL1 LIKE '%" + sep_result[i] + "%'", connection);
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 28 juin 2008 à 22:25
Salut,
Plusieurs remarques :
- renseignes toi sur le problème d'injection et sur le concept de requête paramétrée
- ta façon de batir ta chaine est loin d'etre performante (http://blogs.codes-sources.com/coq/archive/2007/07/28/un-bon-moyen-de-se-souvenir-de-l-ami-stringbuilder.aspx)
- dans ton cas, passer par un DataSet n'a pas de sens
- tu devrais relire la doc de la classe DataTable & co (et celle des autres classes aussi)
- utilises la construction try/catch/finally pour gérer la connexion/déconnexion
Tu devrais passer par OleDbCommand (avec une requête paramétrée) et générer directement ta chaine (avec un StringBuilder) en navigant dans les résultats directement avec l'instance de OleDbDataReader (obtenue via la méthode ExecuteReader d'OleDbCommand).