(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
:errno nil
:error "Connection failed")))))
+#+nil
+(defun store-type-of-connected-database (db)
+ (let* ((odbc-db (odbc-db db))
+ (server-name (get-odbc-info odbc-db odbc::$SQL_SERVER_NAME))
+ (dbms-name (get-odbc-info odbc-db odbc::$SQL_DBMS_NAME))
+ (type
+ ;; need SERVER-NAME and DBMS-NAME because many drivers mix this up
+ (cond
+ ((or (search "postgresql" server-name :test #'char-equal)
+ (search "postgresql" dbms-name :test #'char-equal))
+ :postgresql)
+ ((or (search "mysql" server-name :test #'char-equal)
+ (search "mysql" dbms-name :test #'char-equal))
+ :mysql)
+ ((or (search "oracle" server-name :test #'char-equal)
+ (search "oracle" dbms-name :test #'char-equal))
+ :oracle))))
+ (setf (database-type db) type)))
+
+
(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)
+(defmethod database-query (query-expression (database odbc-database)
+ result-types)
(handler-case
- (odbc:query query-expression :db (database-odbc-conn database)
- :types result-types)
+ (odbc-dbi:sql query-expression :db (database-odbc-conn database)
+ :query t :result-types result-types)
(error ()
(error 'clsql-sql-error
:database database
(defmethod database-execute-command (sql-expression
(database odbc-database))
(handler-case
- (odbc:execute sql-expression (database-odbc-conn database))
+ (odbc-dbi:sql sql-expression (database-odbc-conn database))
(error ()
(error 'clsql-sql-error
:database database
&key full-set result-types)
(handler-case
(multiple-value-bind (query column-names)
- (odbc:query query-expression
+ (odbc-dbi:sql query-expression
:db (database-odbc-conn database)
:row-count nil
:column-names t
: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