2017-01-23 67 views
1

使用SQLite,我如何搜索包含'?'的字符?使用SQLite,我如何搜索包含'?

这工作找到布鲁斯和棒球:

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

不知道如何找到布鲁斯和棒球。

+1

将它们加倍以逃避:'...其中fld ='bruce''s'' **但是**您应该使用参数化查询,它将a)为您做这件事并且b)保护您来自SQL注入。 –

回答

2

你逃避与其他撇号撇号:

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

我知道这可以通过使用两个引号来完成......但是在存储数据之前,要读取数据库中所有新条目(或搜索)的每个字符都有点麻烦。 在OLE DB中使用.Parameters可修复此问题。是否有与SQLite等价的? – ttom

1

参数功能允许使用的字有'字。

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])); 
    }