養活用戶輸入作爲參數傳遞給一個SQLite LIKE子句中我的程序有我如何在Haskell
search = do
conn <- dbConnect
let query = "SELECT * FROM mytables WHERE story LIKE '%engine%'"
result <- quickQuery' conn query []
mapM_ print(...)
disconnect conn
這個工程並搜索字符串,並返回在其發生的完整場。我希望能夠從用戶那裏獲得字符串。我遇到的問題是%。我知道我需要的搜索參數,但一旦我修改說,像這樣的
search key = do
conn <- dbConnect
let query = "SELECT * FROM mytables WHERE story LIKE '%key%'"
result <- quickQuery' coon query []
mapM_ print(...)
disconnect conn
我無法找到任何通過用戶輸入到它的一種方式。沒有任何錯誤,但與任何事物都不匹配。 我一直在試圖找到這件事,但我沒有運氣。這是我的第一個問題,我希望我已經提供了足夠的細節,如果不讓我知道。感謝您的任何建議。
quickQuery' :: IConnection conn => conn -> String -> [SqlValue] -> IO [[SqlValue]]
所以quickQuery」需要一個連接字符串(= sql查詢)和參數列表(= [SqlValue]) 在我沒有使用可替換參數我的代碼,所以我在傳球是正確的它[]。 但我現在還使用可替換參數
search key = do
conn <- dbConnect
let query = "SELECT * FROM mytables WHERE story LIKE (?)"
result <- quickQuery' conn query [toSql key]
mapM_ print(...)
disconnect conn
它編譯,但我有同樣的問題,因爲我真的需要%鍵%,否則它沒有找到我想要查找的單詞試圖版本。它將接受它的唯一方式是「%key%」,但是然後%成爲一個普通的字符而不是一個普通的字符。
謝謝,這是有道理的。我剛剛嘗試過,但現在出現錯誤。異常:SqlError {seState =「」,seNativeError = -1,seErrorMsg =「在HDBC執行中,收到[SqlString \」ambassador \「]但期望0 args。」}。 – Anna
我現在正在遲到。我會咀嚼這個,並在早上回到它。 – Anna
以下您的評論我已經嘗試在代碼中使用可替換的參數,我更新了我的問題。 – Anna