我正在嘗試從 SQLite 資料庫加載資料,但我不知道資料格式,因為它是用戶提供的。
如果所有列的型別相同,則此方法有效:
(entries :: [[Text]]) <- query_ connection "select * from users"
但是,如果列具有不同的型別(例如 INTEGER 或 REAL),我該怎么辦?
uj5u.com熱心網友回復:
TLDR:使用 entries :: [[SQLData]]
您似乎在使用sqlite-simple。在那個包中,型別query_是
query_ :: FromRow r => Connection -> Query -> IO [r]
query_使用FromRow和(間接)FromField型別類。這些是將傳入的 sqlite 行和列資料轉換為用戶期望的格式的助手。
但是,當源和輸出型別不可轉換時,這些轉換可能會失敗。
該SQLData代表“原始”未轉換的sqlite的資料型別。將列值轉換SQLData為無操作且永遠不會失敗。并且[SQLData]用于行也永遠不會失敗,因為串列可以處理任意數量的列(與(SQLData,SQLData)元組不同)。
因此,在處理未知模式時,我們可以使用[SQLData]作為行型別,??然后對SQLData值進行模式匹配以發現實際的 sqlite 型別是什么。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/370614.html
