2014-10-12 5 views
0

SQLite DB (HDBC.sqlite3)에서 Scotty 프레임 워크를 사용하여 웹보기에 대한 정보를 얻으려고합니다. 나는 현재 "모든 것을 잡으려고"하거나 테이블에서 모든 정보를 선택한 다음 Scotty를 통해 실행중인 내 웹 페이지에 표시하기 위해 반환하려고합니다. 오류가 발생하여 문제를 해결하는 데 어려움을 겪고 있습니다.SQLite3 데이터베이스에서 Scotty 값 가져 오기

import Control.Monad 
import Web.Scotty (ScottyM, ActionM, get, html, param, text) 
import Data.Monoid (mconcat) 
import Controllers.CreateDb (createUserDB) 
import Database.HDBC 
import Database.HDBC.Sqlite3 
import Control.Monad.Trans (MonadIO(liftIO)) 
import Data.Convertible 

getAllUsers :: ScottyM() 
getAllUsers = get "https://stackoverflow.com/users/all" $ do 
    html $ mconcat ["<p>/users/all</p><p>", getUsersDB , "</p>"] 

getUsersDB = do 
    conn <- connectSqlite3 databaseFilePath 
    stmt <- prepare conn "SELECT name FROM users VALUES" 
    results <- fetchAllRowsAL stmt 
    disconnect conn 
    return (results) 

답변

1

run 수정 행의 수를 반환 : 여기

Controllers/Home.hs:42:44: 
Couldn't match expected type `Data.Text.Lazy.Internal.Text' 
      with actual type `IO [[(String, SqlValue)]]' 
In the expression: getUsersDB 
In the first argument of `mconcat', namely 
    `["<p>/users/all</p><p>", getUsersDB, "</p>"]' 
In the second argument of `($)', namely 
    `mconcat ["<p>/users/all</p><p>", getUsersDB, "</p>"]' 

내 코드입니다 : 여기

내 오류가 https://hackage.haskell.org/package/HDBC-2.4.0.0/docs/Database-HDBC.html#v:run

+0

덕분에, 나는 아마 실현하지 않았을 그것은 약간의 시간 동안. 그래서 나는 데이터 검색을위한 올바른 옵션을 찾아야한다고 생각합니다. –

+0

@SleepDeprivedBulbasaur 나는 결코 HDBC를 사용하지 못했습니다 (따라서 짧은 답변입니다!). 기본적으로 컴파일러 오류 메시지를 읽습니다. 문서를 보면,'prepare'와'fetchAllRows'를 보길 원할 것입니다. 아니면'quickQuery'가 그럴 수 있습니다. –

+0

따라서 제 질문을 업데이트했습니다. –

관련 문제