diff --git a/selda-sqlite.cabal b/selda-sqlite.cabal
--- a/selda-sqlite.cabal
+++ b/selda-sqlite.cabal
@@ -1,5 +1,5 @@
 name:                selda-sqlite
-version:             0.1.5.1
+version:             0.1.6.0
 synopsis:            SQLite backend for the Selda database EDSL.
 description:         SQLite backend for the Selda database EDSL.
 homepage:            https://github.com/valderman/selda
@@ -22,14 +22,14 @@
     GADTs
     CPP
   build-depends:
-      base          >=4.8     && <5
-    , exceptions    >=0.8     && <0.9
-    , selda         >=0.1.8.0 && <0.2
-    , text          >=1.0     && <1.3
+      base          >=4.8      && <5
+    , exceptions    >=0.8      && <0.9
+    , selda         >=0.1.10.0 && <0.2
+    , text          >=1.0      && <1.3
   if !flag(haste)
     build-depends:
-        direct-sqlite >=2.2     && <2.4
-      , directory     >=1.2.2   && <1.4
+        direct-sqlite >=2.2   && <2.4
+      , directory     >=1.2.2 && <1.4
   hs-source-dirs:
     src
   default-language:
diff --git a/src/Database/Selda/SQLite.hs b/src/Database/Selda/SQLite.hs
--- a/src/Database/Selda/SQLite.hs
+++ b/src/Database/Selda/SQLite.hs
@@ -14,20 +14,21 @@
 -- | Open a new connection to an SQLite database.
 --   The connection is reusable across calls to `runSeldaT`, and must be
 --   explicitly closed using 'seldaClose' when no longer needed.
-sqliteOpen :: (MonadIO m, MonadCatch m) => FilePath -> m SeldaConnection
+sqliteOpen :: (MonadIO m, MonadMask m) => FilePath -> m SeldaConnection
 sqliteOpen file = do
 #ifdef __HASTE__
   error "sqliteOpen called in JS context"
 #else
-  edb <- try $ liftIO $ open (pack file)
-  case edb of
-    Left e@(SQLError{}) -> do
-      throwM (DbError (show e))
-    Right db -> do
-      absFile <- liftIO $ pack <$> makeAbsolute file
-      let backend = sqliteBackend db
-      liftIO $ runStmt backend "PRAGMA foreign_keys = ON;" []
-      newConnection backend absFile
+  mask $ \restore -> do
+    edb <- try $ liftIO $ open (pack file)
+    case edb of
+      Left e@(SQLError{}) -> do
+        throwM (DbError (show e))
+      Right db -> flip onException (liftIO (close db)) . restore $ do
+        absFile <- liftIO $ pack <$> makeAbsolute file
+        let backend = sqliteBackend db
+        liftIO $ runStmt backend "PRAGMA foreign_keys = ON;" []
+        newConnection backend absFile
 #endif
 
 -- | Perform the given computation over an SQLite database.
@@ -36,9 +37,7 @@
 #ifdef __HASTE__
 withSQLite _ _ = return $ error "withSQLite called in JS context"
 #else
-withSQLite file m = do
-  conn <- sqliteOpen file
-  runSeldaT m conn `finally` seldaClose conn
+withSQLite file m = bracket (sqliteOpen file) seldaClose (runSeldaT m)
 
 sqliteBackend :: Database -> SeldaBackend
 sqliteBackend db = SeldaBackend
@@ -46,7 +45,7 @@
   , runStmtWithPK   = \q ps -> fst <$> sqliteQueryRunner db q ps
   , prepareStmt     = \_ _ -> sqlitePrepare db
   , runPrepared     = sqliteRunPrepared db
-  , ppConfig        = defPPConfig
+  , ppConfig        = defPPConfig {ppMaxInsertParams = Just 999}
   , backendId       = SQLite
   , closeConnection = \conn -> do
       stmts <- allStmts conn
