Common Lisp 操做Mysql

Common Lisp 經過CFFI能夠調用其它語言的接口,如此,Common Lisp能夠快速開發各類應用程序,本文將講述在ubuntu系統下的一個簡單的Common Lisp與mysql交互的實例。 php

準備

  • 安裝CFFI

sudo apt-get install cl-cffi
  • 安裝CL-MYSQL

sudo apt-get install cl-sql-mysql
  • 安裝MYSQL

sudo apt-get install mysql-server
  • 安裝quicklisp

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數據庫創建本身的應用程序了!

相關文章
相關標籤/搜索