r2028: added reader features for non-allegro systems
[clsql.git] / interfaces / aodbc / aodbc-sql.cl
index 780c19663d50eca6039b37ad42c7ef7adac6f9e1..9cc69ece71ae3cf80f54e5e79f729259da057ce2 100644 (file)
@@ -7,7 +7,7 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: aodbc-sql.cl,v 1.4 2002/03/24 18:39:32 kevin Exp $
+;;;; $Id: aodbc-sql.cl,v 1.9 2002/05/13 16:41:22 kevin Exp $
 ;;;;
 ;;;; This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg
 ;;;;
 (in-package :clsql-aodbc)
 
 
+;; interface foreign library loading routines
 (defmethod database-type-library-loaded ((database-type (eql :aodbc)))
   "T if foreign library was able to be loaded successfully. "
   (when (find-package :dbi) ;; finds Allegro's DBI (AODBC) package
     t))
 
+(defmethod clsql-sys:database-type-load-foreign ((databae-type (eql :aodbc)))
+  t)
+
+(when (find-package :dbi)
+  (clsql-sys:database-type-load-foreign :aodbc)) 
+
 (defmethod database-initialize-database-type ((database-type (eql :aodbc)))
   t)
 
+
+;; AODBC interface
+
 (defclass aodbc-database (database)
   ((aodbc-conn :accessor database-aodbc-conn :initarg :aodbc-conn)))
 
@@ -40,6 +50,7 @@
 
 (defmethod database-connect (connection-spec (database-type (eql :aodbc)))
   (check-connection-spec connection-spec database-type (dsn user password))
+  #+aodbc-v2
   (destructuring-bind (dsn user password) connection-spec
     (handler-case
        (make-instance 'aodbc-database
               :error "Connection failed")))))
 
 (defmethod database-disconnect ((database aodbc-database))
+  #+aodbc-v2
   (dbi:disconnect (database-aodbc-conn database))
   (setf (database-aodbc-conn database) nil)
   t)
 
-(defmethod database-query (query-expression (database aodbc-database) field-types) 
+(defmethod database-query (query-expression (database aodbc-database) types) 
+  #+aodbc-v2
   (handler-case
-      (dbi:sql query-expression :db (database-aodbc-conn database))
+      (dbi:sql query-expression :db (database-aodbc-conn database)
+              :types types)
     (error ()
       (error 'clsql-sql-error
             :database database
@@ -72,6 +86,7 @@
 
 (defmethod database-execute-command (sql-expression 
                                     (database aodbc-database))
+  #+aodbc-v2
   (handler-case
       (dbi:sql sql-expression :db (database-aodbc-conn database))
     (error ()
 
 (defstruct aodbc-result-set
   (query nil)
-  (field-types nil :type cons)
+  (types nil :type cons)
   (full-set nil :type boolean))
 
 (defmethod database-query-result-set (query-expression (database aodbc-database) 
-                                     &key full-set field-types)
+                                     &key full-set types)
+  #+aodbc-v2
   (handler-case 
       (multiple-value-bind (query column-names)
          (dbi:sql query-expression 
                   :row-count nil
                   :column-names t
                   :query t
+                  :types types
                   )
        (values
         (make-aodbc-result-set :query query :full-set full-set 
-                               :field-types field-types)
+                               :types types)
         (length column-names)
         nil ;; not able to return number of rows with aodbc
         ))
             :error "Query result set failed"))))
 
 (defmethod database-dump-result-set (result-set (database aodbc-database))
+  #+aodbc-v2
   (dbi:close-query (aodbc-result-set-query result-set))
   t)
 
 (defmethod database-store-next-row (result-set
                                    (database aodbc-database)
                                    list)
+  #+aodbc-v2
   (let ((row (dbi:fetch-row (aodbc-result-set-query result-set) nil 'eof)))
     (if (eq row 'eof)
        nil