From 8133ca7db26e719bb534c036207b7aba1d6a4b75 Mon Sep 17 00:00:00 2001 From: "Kevin M. Rosenberg" Date: Mon, 12 Apr 2004 22:20:51 +0000 Subject: [PATCH] r8987: add mid-level [dbi] interface --- clsql-odbc.asd | 3 +- db-odbc/odbc-api.lisp | 19 ----------- db-odbc/odbc-dbi.lisp | 68 +++++++++++++++++++++++++++++++++++++++ db-odbc/odbc-package.lisp | 14 +++----- db-odbc/odbc-sql.lisp | 14 ++++---- 5 files changed, 81 insertions(+), 37 deletions(-) create mode 100644 db-odbc/odbc-dbi.lisp diff --git a/clsql-odbc.asd b/clsql-odbc.asd index ae49148..d3e728d 100644 --- a/clsql-odbc.asd +++ b/clsql-odbc.asd @@ -35,5 +35,6 @@ ((:file "odbc-package") (:file "odbc-loader" :depends-on ("odbc-package")) (:file "odbc-api" :depends-on ("odbc-loader")) - (:file "odbc-sql" :depends-on ("odbc-api")))))) + (:file "odbc-dbi" :depends-on ("odbc-api")) + (:file "odbc-sql" :depends-on ("odbc-dbi")))))) diff --git a/db-odbc/odbc-api.lisp b/db-odbc/odbc-api.lisp index 332200c..717d9cf 100644 --- a/db-odbc/odbc-api.lisp +++ b/db-odbc/odbc-api.lisp @@ -18,22 +18,3 @@ (in-package #:odbc) -(defun connect (&key user password data-source-name) - (warn "Not implemented.") - nil) - -(defun disconnect (conn) - (warn "Not implemented.")) - - -(defun query (expr &key db result-types row-count column-names) - (warn "Not implemented.")) - -(defun execute (expr conn) - (warn "Not implemented.")) - -(defun close-query (result-set) - (warn "Not implemented.")) - -(defun fetch-row (result-set error-eof eof-value) - (warn "Not implemented.")) diff --git a/db-odbc/odbc-dbi.lisp b/db-odbc/odbc-dbi.lisp new file mode 100644 index 0000000..6b11714 --- /dev/null +++ b/db-odbc/odbc-dbi.lisp @@ -0,0 +1,68 @@ +;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*- +;;;; ************************************************************************* +;;;; FILE IDENTIFICATION +;;;; +;;;; Name: odbc-dbi.cl +;;;; Purpose: Mid-level (DBI) interface for CLSQL ODBC backend +;;;; Author: Kevin M. Rosenberg +;;;; Create: April 2004 +;;;; +;;;; $Id: odbc-sql.lisp 8983 2004-04-12 21:16:48Z kevin $ +;;;; +;;;; This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; +;;;; CLSQL users are granted the rights to distribute and use this software +;;;; as governed by the terms of the Lisp Lesser GNU Public License +;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. +;;;; ************************************************************************* + +(in-package #:cl-user) + +(defpackage #:odbc-dbi + (:use #:cl #:odbc) + (:export + #:bind-parameter + #:close-query + #:connect + #:db-external-format + #:db-hstmt + #:db-width + #:disconnect + #:end-transaction + #:fetch-row + #:list-all-database-tables + #:list-all-table-columns + #:loop-over-results + #:prepare-sql + #:rr-sql + #:run-prepared-sql + #:set-autocommit + #:sql + + #:*auto-trim-strings* + #:*default-database* + #:*default-odbc-external-format* + #:*null-value* + ) + (:documentation "This is the mid-level interface ODBC."))) + +(in-package #:odbc-dbi) + +(defun connect (&key user password data-source-name) + (warn "Not implemented.") + nil) + +(defun disconnect (conn) + (warn "Not implemented.")) + +(defun query (expr &key db result-types row-count column-names) + (warn "Not implemented.")) + +(defun execute (expr conn) + (warn "Not implemented.")) + +(defun close-query (result-set) + (warn "Not implemented.")) + +(defun fetch-row (result-set error-eof eof-value) + (warn "Not implemented.")) diff --git a/db-odbc/odbc-package.lisp b/db-odbc/odbc-package.lisp index 4c83742..b84cd12 100644 --- a/db-odbc/odbc-package.lisp +++ b/db-odbc/odbc-package.lisp @@ -19,15 +19,9 @@ (in-package #:cl-user) (defpackage #:odbc - (:use #:cl #:clsql-uffi) - (:export + (:use #:cl #:clsql-uffi) + (:export #:database-library-loaded - - #:connect - #:disconnect - #:sql - #:close-query - #:fetch-row - ) - (:documentation "This is the low-level interface ODBC.")) + (:documentation "This is the low-level interface ODBC.")) + diff --git a/db-odbc/odbc-sql.lisp b/db-odbc/odbc-sql.lisp index 30308e5..bcde3fc 100644 --- a/db-odbc/odbc-sql.lisp +++ b/db-odbc/odbc-sql.lisp @@ -42,7 +42,7 @@ (make-instance 'odbc-database :name (database-name-from-spec connection-spec :odbc) :odbc-conn - (odbc:connect :user user + (odbc-dbi:connect :user user :password password :data-source-name dsn)) (error () ;; Init or Connect failed @@ -53,13 +53,13 @@ :error "Connection failed"))))) (defmethod database-disconnect ((database odbc-database)) - (odbc:disconnect (database-odbc-conn database)) + (odbc-dbi:disconnect (database-odbc-conn database)) (setf (database-odbc-conn database) nil) t) (defmethod database-query (query-expression (database odbc-database) result-types) (handler-case - (odbc:sql query-expression :db (database-odbc-conn database) + (odbc-dbi:sql query-expression :db (database-odbc-conn database) :types result-types) (error () (error 'clsql-sql-error @@ -71,7 +71,7 @@ (defmethod database-execute-command (sql-expression (database odbc-database)) (handler-case - (odbc:sql sql-expression (database-odbc-conn database)) + (odbc-dbi:sql sql-expression (database-odbc-conn database)) (error () (error 'clsql-sql-error :database database @@ -89,7 +89,7 @@ &key full-set result-types) (handler-case (multiple-value-bind (query column-names) - (odbc:sql query-expression + (odbc-dbi:sql query-expression :db (database-odbc-conn database) :row-count nil :column-names t @@ -110,13 +110,13 @@ :error "Query result set failed")))) (defmethod database-dump-result-set (result-set (database odbc-database)) - (odbc:close-query (odbc-result-set-query result-set)) + (odbc-dbi:close-query (odbc-result-set-query result-set)) t) (defmethod database-store-next-row (result-set (database odbc-database) list) - (let ((row (odbc:fetch-row (odbc-result-set-query result-set) nil 'eof))) + (let ((row (odbc-dbi:fetch-row (odbc-result-set-query result-set) nil 'eof))) (if (eq row 'eof) nil (progn -- 2.34.1