2010-09-03 12 views
0

je suis d'ajouter le paramètre parcomment je peux utiliser comme déclaration C#

qry = qry.Replace("{criteria}", "info.abc LIKE '%?val%'"); 
commande

pas travaillé si j'enlevé ' ' de la commande il donne une erreur comment je peux rechercher la table dans C#

+6

Publier toute requête. –

+4

Afficher le modèle de requête d'origine. –

+1

Besoin de plus d'informations si vous voulez de l'aide ... – Gage

Répondre

1

selon la syntaxe de TSQL - Like vous avez besoin de mettre la valeur de recherche entre « »

Exemple:

WHERE title LIKE '%computer%' 

syntaxe

match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ] 
-2

Une autre façon de faire ce qui est plus explicite - et plus lisible, à mon avis, car il évite les parties crockety de la syntaxe SQL:

SqlDataReader r = new SqlCommand("SELECT * FROM the_table").ExecuteReader(); 
object[] values = new object[5000]; 
r.GetValues(values); 
foreach (string value in values) 
    if (value.Length > 4) 
     if (value.Contains("val")) 
      new SqlCommand("UPDATE the_table SET value = 'newValue' WHERE "+ 
          "value = '"+value+"'").ExecuteNonQuery(); 
+0

Cette solution a un risque d'injection SQL (voir http://en.wikipedia.org/wiki/SQL_injection). Il vaudrait mieux utiliser des requêtes paramétrées. En outre, il peut avoir un impact élevé sur les performances (il doit exécuter autant de requêtes qu'il y a d'enregistrements dans "the_table") – ckarras

+0

@ckarras: Merci, je ne connaissais pas l'attaque par injection SQL. La performance ne devrait pas être un souci, cependant. Concentrez-vous d'abord sur le bon fonctionnement, puis sur l'obtention rapide si vous en avez besoin. – CSpangled

+0

- 'Concentrez-vous d'abord sur le bon fonctionnement, puis sur l'obtention rapide si vous en avez besoin. Où est la chaîne de connexion utilisée? Sans chaîne de connexion, comment saura-t-elle quelle base de données et quelle instance exécuter? – TCM

Questions connexes