我有一个函数,它给出一个Int
返回字符串列表的列表。
fetchParts :: Int -> [[String]]
这就是输出的样子
[["title", "some title"], ["rate", "2.4"], ["dist", "some string"], ["tr", "1"], ["td, "2"] ..]]
输出的长度可以是可变的。只有前 3 个列表可以 100% 出现。
列表的后半部分可以是
["a", "1"], ["b", "2"] ..
或者
["some", "1"], ["part", "2"], ["of", "3"] ..]
或者
["ex1", "a"], ["ex2", "b"], ..]
或其他一些字符串组合。
我想将此输出添加到 sqlite3 数据库文件中。我为此使用HDBC和HDBC.Sqlite3。
要将某些内容添加到数据库文件中,我正在运行这些函数
initialConnection <- connectSqlite3 "src/parts.db"
run initialConnection partsEntry []
commit initialConnection
disconnect initialConnection
partsEntry
像这样的简单 SQL 字符串在哪里
partsEntry = "INSERT INTO PARTSDATA ( title, rate, dist, ...) VALUES ( "some title", "2.4", "some string", ...)
在哪里
( title, rate, dist, ...)
来自head <$> fetchParts 1
和
("some title", "2.4", "some string" ...)
来自last <$> fetchParts 1
问题是如果"some"
列不存在,代码会抛出错误。
我想做的是这样的
- 如果列
"abc"
不存在,则在当前行添加列"abc"
并插入 值"this"
- 如果列存在,只需在当前行
"abc"
插入值"this"
但我不知道该怎么做。