我正在尝试获取一个简单的 haskell 程序来与 MySQL 数据库通信。该程序可以正确构建,但是当我运行该程序时,我从第一个查询中获得了大约一半的输出,然后是以下我难以解释的错误:
SqlError {seState = "[]", seNativeError = -2, seErrorMsg = "sqlFetch: []"}
该程序从 MySQL 数据库中的图像中提取带有标签的文本框,并将其解析为固定格式。
query :: Option -> String -> IO SupplementalFacts
query op queryText = do
conn <- connectODBC "DSN=imgparse"
stmt <- prepare conn queryText
execute stmt [] >> fetchRow stmt
handle op stmt where
unSQLString x = fromSql x :: String
unSQLInteger x = fromSql x :: Integer
unSQLRow (x:xs) = Ocr (unSQLString x) (locatize $ unSQLInteger <$> xs)
handle option statement
| option == Parsed = (fetchAllRows statement) >>= (\rows -> return $ parseTable $ unSQLRow <$> rows)
translit :: URL -> IO SupplementalFacts
translit u = query Parsed $ "SELECT description, x_1, y_1, x_3, y_3 FROM ocr_json_response where pic_url='" ++ u ++ "'"
parseTable :: [OcrRow] -> SupplementalFacts
...
使用 app/Main.hs...
main :: IO ()
main = do
translit url1 >>= (\x -> putStrLn $ show x)
translit url2 >>= (\x -> putStrLn $ show x)
translit url3 >>= (\x -> putStrLn $ show x)
translit url4 >>= (\x -> putStrLn $ show x)
return ()
Main.hs 目前只是为测试示例 url 输入的执行而设置的。
希望这是足够的细节。我也仍然非常“爬哈斯克尔山”,所以也随时对代码提出任何建议。