2017-01-23 4 views
1

Wie kann ich mit SQLite nach Zeichen suchen, die ein '?Wie kann ich mit SQLite nach Zeichen suchen, die ein '?

Dies funktioniert bruce und Baseball zu finden:

string stCmdString = "SELECT fstInfo FROM PadTable WHERE fstInfo LIKE '%bruce%' AND fstInfo LIKE '%baseball%'" 

Nicht sicher, wie Bruces und Baseball zu finden.

+1

Verdoppeln Sie sie, um zu entkommen: '... wo fld = 'bruce''' ** aber ** Sie sollten eine parametrisierte Abfrage verwenden, die a) dies für Sie tun und b) Sie sichern von SQL Injection. –

Antwort

2

Sie entkommen den Apostroph mit einem anderen Apostroph:

string stCmdString = "SELECT fstInfo FROM PadTable WHERE fstInfo LIKE '%bruce''s%' AND fstInfo LIKE '%baseball%'" 
+0

Ich weiß, dass es mit zwei Anführungszeichen getan werden kann ... aber das ist ein bisschen mühsam, jedes Zeichen aller neuen Einträge (oder Suchen) in die Datenbank zu lesen, bevor die Daten gespeichert werden. Die Verwendung von .Parameters in OLE DB behebt dieses Problem. Gibt es eine Entsprechung für SQLite? – ttom

1

Die Parameter-Funktion ermöglicht die Verwendung von Wörtern, die "im Wort.

using (System.Data.SQLite.SQLiteCommand sqliteCmd = sqliteConnection.CreateCommand()) 
{ 
    sqliteCmd.CommandText = "SELECT" + stFieldNames + "FROM " + stTableName + " WHERE " + stLikeFieldName + " LIKE '%' || @p0 || '%'"; 
    sqliteCmd.Parameters.Add(new SQLiteParameter("@p0", liststLikeFieldValue[0])); 
    for (int iii = 1; iii < liststLikeFieldValue.Count; iii++) 
    { 
    sqliteCmd.CommandText += " AND " + stLikeFieldName + " LIKE '%' || @p" + iii.ToString() + " || '%'"; 
    sqliteCmd.Parameters.Add(new SQLiteParameter("@p" + iii.ToString(), liststLikeFieldValue[iii])); 
    } 
Verwandte Themen