Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Database independent interface for Common Lisp
Common Lisp
tree: f7e4e7c591

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
src
t
.gitignore
README.markdown
dbd-mysql.asd
dbd-postgres.asd
dbd-sqlite3.asd
dbi-test.asd
dbi.asd

README.markdown

CL-DBI - Database independent interface for Common Lisp

Usage

(defvar *connection*
    (dbi:connect :mysql
                 :database-name "test"
                 :username "nobody"
                 :password "1234"))

(let ((query (dbi:prepare *connection*
               "SELECT * FROM somewhere WHERE flag = ? OR updated_at > ?"))
      (result (dbi:execute query 0 "2011-11-01")))
  (loop for row = (dbi:fetch result)
        while row
        ;; process "row".
        ))

Description

CL-DBI is intended to provide the same interface for each database.

Not only, you don't have to learn each API of databases anymore, but this layer is especially convenient when you want to use the different database by environment.

For example, your application had better to use efficient database such as MySQL on the production environment, but you may want to use SQLite3 on your machine. In that case, all what you have to do is only to rewrite calling dbi:connect.

Databases

  • SQLite3
  • PostgreSQL
  • MySQL

Installation

This library will be available on Quicklisp when ready to use.

API

User-Level API

  • connect [driver-name & params] => <dbi-connection>
  • disconnect [<dbi-connection>] => T or NIL
  • prepare [conn sql] => <dbi-query>
  • execute [query & params] => something
  • fetch [result] => a row data as plist
  • do-sql [conn sql & params]
  • list-all-drivers [] => (<dbi-driver> ..)
  • find-driver [driver-name] => <dbi-driver>
  • with-transaction [conn]
  • begin-transaction [conn]
  • commit [conn]
  • rollback [conn]

Driver-Level API

  • <dbi-driver>
  • <dbi-connection>
  • make-connection [driver params]
  • disconnect [<dbi-connection>] => T or NIL
  • prepare [conn sql] => <dbi-query>
  • fetch-using-connection [conn result] => a row data as plist
  • do-sql [conn sql & params]
  • execute-using-connection => something
  • escape-sql => string
  • begin-transaction [conn]
  • commit [conn]
  • rollback [conn]

Creating a new driver

Create a subclass of <dbi-driver> and implement following methods.

  • make-connection
  • disconnect [<dbi-connection>] => T or NIL
  • execute-using-connection

And these methods may be overrided if needed.

  • prepare
  • fetch-using-connection
  • do-sql
  • escape-sql

Dependencies

  • cl-annot
  • CL-Syntax
  • SPLIT-SEQUENCE
  • closer-mop

Author

Copyright

Copyright (c) 2011 Eitarow Fukamachi (e.arrows@gmail.com)

License

Licensed under the LLGPL License.

Something went wrong with that request. Please try again.