diff -r -u sqlite-0.4.2.dist/Database/SQLite/Base.hs sqlite-0.4.2/Database/SQLite/Base.hs
--- sqlite-0.4.2.dist/Database/SQLite/Base.hs	2008-10-25 04:04:00.000000000 -0700
+++ sqlite-0.4.2/Database/SQLite/Base.hs	2008-11-10 14:47:22.000000000 -0800
@@ -44,7 +44,7 @@
        , sqlite3_progress_handler
        , sqlite3_open
        , sqlite3_open16
---       , sqlite3_open_v2
+       , sqlite3_open_v2
        , sqlite3_errcode
        , sqlite3_errmsg
 
@@ -349,10 +349,8 @@
 foreign import ccall "sqlite3.h sqlite3_open16"
   sqlite3_open16 :: SQLiteUTF16 -> Ptr SQLite -> IO Status
 
-{-
 foreign import ccall "sqlite3.h sqlite3_open_v2"
   sqlite3_open_v2 :: CString -> Ptr SQLite -> OpenFlags -> CString -> IO Status
--}
 
 foreign import ccall "sqlite3.h sqlite3_errcode"
   sqlite3_errcode :: SQLite -> IO Status
diff -r -u sqlite-0.4.2.dist/Database/SQLite.hs sqlite-0.4.2/Database/SQLite.hs
--- sqlite-0.4.2.dist/Database/SQLite.hs	2008-10-25 04:04:00.000000000 -0700
+++ sqlite-0.4.2/Database/SQLite.hs	2008-11-10 14:47:22.000000000 -0800
@@ -27,6 +27,7 @@
 
        -- * Opening and closing a database
        , openConnection
+       , openReadConnection
        , closeConnection
 
        -- * Executing SQL queries on the database
@@ -104,6 +105,17 @@
     _ -> fail ("openDatabase: failed to open " ++ show st)
 
 
+openReadConnection :: String -> IO SQLiteHandle
+openReadConnection dbName =
+  alloca $ \ptr -> do
+  st  <- withCString dbName $ \ c_dbName ->
+                sqlite3_open_v2 c_dbName ptr sQLITE_OPEN_READONLY nullPtr
+  case st of
+    0 -> do db <- peek ptr
+            newSQLiteHandle db
+    _ -> fail ("openDatabase: failed to open " ++ show st)
+
+
 -- | Close a database connection.
 -- Destroys the SQLite value associated with a database, closes
 -- all open files relating to the database, and releases all resources.
Only in sqlite-0.4.2/Database: SQLite.hs.orig
