Common Lisp 利用CFFI 操作Mysql(转贴)

  • 0

Common Lisp 利用CFFI 操作Mysql(转贴)

Category:语言学习 Tags : 

原文网址:https://blog.csdn.net/firstblood2008/article/details/8950340

转自: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数据库建立自己的应用程序了!

http://mip.i3geek.com

Leave a Reply

搜索

分类目录

公 告

本网站学习论坛:

www.zhlisp.com

lisp中文学习源码:

https://github.com/zhlisp/

欢迎大家来到本站,请积极评论发言;

加QQ群学习交流。