Common Lisp 利用CFFI 操作Mysql

轉自:http://my.oschina.net/u/1011760/blog/130787

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

準備

  • 安裝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).

         進入slime:

             M+x slime
          slime下加載quicklisp:
             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操作包:

          (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)。

             切換到自定義包:

            CL-USER> (in-package :com.casic.mysql-oper)
            #<PACKAGE "COM.CASIC.MYSQL-OPER">
 

             鏈接mysql數據庫:

            MYSQL-OPER> (connect :host "localhost" :user "root" :password "")
            #<CONNECTION-POOL {BF51E81}>
 

           進入現有數據庫test:

            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數據庫建立自己的應用程序了!



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章