Common Lisp 经过CFFI能够调用其它语言的接口,如此,Common Lisp能够快速开发各类应用程序,本文将讲述在ubuntu系统下的一个简单的Common Lisp与mysql交互的实例。 php
sudo apt-get install cl-cffi
sudo apt-get install cl-sql-mysql
sudo apt-get install mysql-server
wget http://beta.quicklisp.org/quicklisp.lisp
启动slime或sbcl(本例使用slime). mysql
进入slime: sql
M+x slime
slime下加载quicklisp: shell
CL-USER> (load "quicklisp.lisp") CL-USER> (quicklisp-quickstart:install) CL-USER> (ql:add-to-init-file)
加载cffi和cl-mysql: 数据库
CL-USER> (ql:quickload "cffi") CL-USER> (ql:quickload "cl-mysl")
定义试验用的mysql操做包: ubuntu
(defpackage :com.casic.mysql-oper (:use :common-lisp :cl-mysql :cl-mysql-system)) #<PACKAGE "COM.CASIC.MYSQL-OPER">
(注:本实例涉及到的mysql操做分别包含于cl-mysql包和cl-mysql-system包内,为避免常常性地切换包,创建一包含以上两包的自定义包mysql-oper)。 ui
切换到自定义包: spa
CL-USER> (in-package :com.casic.mysql-oper) #<PACKAGE "COM.CASIC.MYSQL-OPER">
连接mysql数据库: code
MYSQL-OPER> (connect :host "localhost" :user "root" :password "") #<CONNECTION-POOL {BF51E81}>
进入现有数据库test: server
MYSQL-OPER> (query "use test") (((0) NIL))
建立新表person_info:
MYSQL-OPER> (query "create table person_info\(id int\)") (((0) NIL))
插入数据:
MYSQL-OPER> (query "create table person-info\(id int\)") (((1) NIL))也能够处理multi-statements,多语句:
MYSQL-OPER> (query "insert into person_info values \(2\);insert into person_info values \(3\);insert into person_info values \(4\)") (((1) NIL) ((1) NIL) ((1) NIL))
查询数据:
MYSQL-OPER> (query "select * from person_info") ((((1) (2) (3) (4)) (("id" :LONG 32768))))更新数据:
MYSQK-OPER> (query "update person_info set id=6 where id=4") (((1) NIL)) MYSQL-OPER> (query "select * from person_info") ((((1) (2) (3) (5)) (("id" "LONG 32768))删除数据:
MYSQL-OPER> (query "delete from person_info where id=5") (((1) NIL)) MYSQL-OPER> (query "select * from person_info") ((((1) (2) (3)) (("id" :LONG 32768))
至此,Common Lisp经过cffi和cl-mysql操做mysql数据库的基本功能完成。您能够像使用php同样操做mysql数据库创建本身的应用程序了!