SQL Parameters and the LIKE clause in C#

Recently I wanted to write a SQL statement for my ASP.NET app like this:

SELECT * FROM tasks WHERE name like ‘?%’

And then add the parameter with the usual statement:

cmd.Parameters.Add(“?name”, MySqlDbType.
VarChar, 100).Value = firstName;

But as you might have guessed, this does not work.

One workaround is to just use Stored Procedures, but this is not always a good choice. The other approach is to just set the pattern when you create the Parameter:

cmd.Parameters.Add(“?name”, MySqlDbType.
VarChar, 100).Value = firstName + ‘%’;

And just have the placeholder in the SQL query like this:

SELECT * FROM tasks WHERE name like ?




Ähnliche Beiträge


2 Kommentare zu “SQL Parameters and the LIKE clause in C#”



  • Beat Hiss am 20. April 2007 10:52 am Uhr

    Hey Remy

    beim lesen deines blogs bin ich auf folgenden beitrag gestossen”SQL
    Parameters and the LIKE clause in C#”.

    ich habe gerade im bereich von web applications sehr gute erfahrungen
    mit Stored Procedures gemacht. damit lässt sich grösstenteils
    verhindern, dass via SQL-Injection sensitive daten abgefragt, bzw.
    maninpuliert werden.
    hilfreich könnten auch Prepared Statements sein (durch verwendung
    eines geeigneten frameworks, Ruby on Rails etc.)

    was hältst du davon?

    Lieber Gruss
    Beat


  • Remy Blaettler am 20. April 2007 10:52 am Uhr

    Sali Beat
    Wir brauchen MySQL, bis vor kurzem hatten die noch gar keine Stored Procs.

    PreparedStatements, wie helfen die gegen SQL Injection?
    Ich habe es so verstanden, dass wenn ich command parameters brauche fuer die variablen, dann sollte ich sicher sein. Einfach nie den SQL string zusammenbasteln.
    Oder sehe ich das falsch?

    Gruss

    Remy


Leave a Reply

Your email address will not be published. Required fields are marked *



*