Basic support for ODBC 3.0 API.
Tested partially: handle allocation, connection, prepare, execute Missing: Support for SQLBindCol & several catalog functions. The scsh 0.53 API abstraction need s to be implemented on top of the ODBC 3 API.
This commit is contained in:
		
							parent
							
								
									d21f901097
								
							
						
					
					
						commit
						3b2dbc5f65
					
				|  | @ -0,0 +1,215 @@ | |||
| 
 | ||||
| ;;; record types | ||||
| 
 | ||||
| ;(define-record-type sql-date :sql-date | ||||
| ;  (make-sql-date year month day) | ||||
| ;  sql-date? | ||||
| ;  (year sql-date-year sql-date-year!) | ||||
| ;  (month sql-date-month sql-date-month!) | ||||
| ;  (day sql-date-day sql-date-day!)) | ||||
| ;(define-record-type sql-time :sql-time | ||||
| ;  (make-sql-time hour minute second) | ||||
| ;  sql-time? | ||||
| ;  (hour sql-time-hour sql-time-hour!) | ||||
| ;  (minute sql-time-minute sql-time-minute!) | ||||
| ;  (second sql-time-second sql-time-second!)) | ||||
| 
 | ||||
| ;(define-record-type sql-timestamp :sql-timestamp | ||||
| ;  (make-sql-timestamp year month day hour minute second fraction) | ||||
| ;  sql-timestamp? | ||||
| ;  (year sql-timestamp-year sql-timestamp-year!) | ||||
| ;  (month sql-timestamp-month sql-timestamp-month!) | ||||
| ;  (day sql-timestamp-day sql-timestamp-day!) | ||||
| ;  (hour sql-timestamp-hour sql-timestamp-hour!) | ||||
| ;  (minute sql-timestamp-minute sql-timestamp-minute!) | ||||
| ;  (second sql-timestamp-second sql-timestamp-second!) | ||||
| ;  (fraction sql-timestamp-fraction sql-timestamp-fraction!)) | ||||
| 
 | ||||
| ;(define-record-type sql-numeric :sql-numeric | ||||
| ;  (make-sql-numeric precision scale sign value) | ||||
| ;  sql-numeric? | ||||
| ;  (precision sql-precision sql-precision!) | ||||
| ;  (scale sql-scale sql-scale!) | ||||
| ;  (sign sql-sign sql-sign!) | ||||
| ;  (value sql-value sql-value!)) | ||||
| 
 | ||||
| ;;; handle type identifiers from sql.h | ||||
| (define handle-type-env  1) | ||||
| (define handle-type-dbc  2) | ||||
| (define handle-type-stmt 3) | ||||
| (define handle-type-desc 4) | ||||
| 
 | ||||
| ;;; options for SQLFreeStmt from sql.h | ||||
| (define sql-disconnect-opt-close 0) | ||||
| (define sql-disconnect-opt-drop 1) | ||||
| (define sql-disconnect-opt-unbind 2) | ||||
| (define sql-disconnect-opt-reset-params 3) | ||||
| 
 | ||||
| ;;; options for SQLDataSource from sql.h | ||||
| (define sql-datasources-fetch-next  1) | ||||
| (define sql-datasources-fetch-first 2) | ||||
| 
 | ||||
| ;;;; just for testing purposes, will disappear soon | ||||
| ;(define open-db | ||||
| ;  (lambda (server user auth) | ||||
| ;	 (let* ((env-handle  (odbc-alloc-environment-handle)) | ||||
| ;			  (conn-handle (odbc-alloc-connection-handle env-handle))) | ||||
| ;		(odbc-sql-connect conn-handle server user auth)))) | ||||
| 
 | ||||
| ;(define list-datasources | ||||
| ;  (lambda () | ||||
| ;	 (let ((env-handle (odbc-alloc-environment-handle))) | ||||
| ;		(odbc-sql-data-sources env-handle sql-datasources-fetch-first)))) | ||||
| 
 | ||||
| ;(define list-drivers | ||||
| ;  (lambda () | ||||
| ;	 (let ((env-handle (odbc-alloc-environment-handle))) | ||||
| ;		(odbc-sql-drivers env-handle)))) | ||||
| 
 | ||||
| ;(define free-handle | ||||
| ;  (lambda (handle handle-type) | ||||
| ;	 (odbc-sql-free-handle handle-type handle))) | ||||
| 
 | ||||
| ;(define free-environment-handle | ||||
| ;  (lambda (handle) | ||||
| ;	 (free-handle handle handle-type-env))) | ||||
| 
 | ||||
| ;(define free-connection-handle | ||||
| ;  (lambda (handle) | ||||
| ;	 (free-handle handle handle-type-dbc))) | ||||
| 
 | ||||
| ;(define free-statement-handle | ||||
| ;  (lambda (handle) | ||||
| ;	 (free-handle handle handle-type-stmt))) | ||||
| 
 | ||||
| ;(define free-description-handle | ||||
| ;  (lambda (handle) | ||||
| ;	 (free-handle handle handle-type-desc))) | ||||
| 
 | ||||
| ;;; PART 1 | ||||
| 
 | ||||
| (import-lambda-definition odbc-alloc-environment-handle | ||||
| 								  () | ||||
| 								  "odbc_alloc_environment_handle") | ||||
| 
 | ||||
| (import-lambda-definition odbc-alloc-connection-handle | ||||
| 								  (env-handle) | ||||
| 								  "odbc_alloc_connection_handle") | ||||
| 
 | ||||
| (import-lambda-definition odbc-alloc-statement-handle | ||||
| 								  (db-handle) | ||||
| 								  "odbc_alloc_statement_handle") | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-connect | ||||
| 								  (conn-handle server-name user-name auth) | ||||
| 								  "odbc_sql_connect") | ||||
| 
 | ||||
| ;;; PART 2 | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-data-sources | ||||
| 								  (env-handle direction) | ||||
| 								  "odbc_sql_data_sources") | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-drivers | ||||
| 								  (env-handle) | ||||
| 								  "odbc_sql_drivers") | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-get-info-int | ||||
| 								  (conn-handle info-key) | ||||
| 								  "odbc_sql_get_info_int") | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-get-info-string | ||||
| 								  (conn-handle info-key) | ||||
| 								  "odbc_sql_get_info_string") | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-get-func-exists | ||||
| 								  (conn-handle fun-id) | ||||
| 								  "odbc_sql_get_func_exists") | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-get-type-info | ||||
| 								  (stmt-handle data-type) | ||||
| 								  "odbc_sql_get_type_info") | ||||
| 
 | ||||
| ;;; PART 3 | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-set-connect-attr-int | ||||
| 								  (conn-handle attribute value) | ||||
| 								  "odbc_sql_set_connect_attr_int") | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-set-connect-attr-string | ||||
| 								  (conn-handle attribute value) | ||||
| 								  "odbc_sql_set_connect_attr_string") | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-get-connect-attr-string | ||||
| 								  (conn-handle attribute) | ||||
| 								  "odbc_sql_get_connect_attr_string") | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-get-connect-attr-int | ||||
| 								  (conn-handle attribute) | ||||
| 								  "odbc_sql_get_connect_attr_int") | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-set-env-attr-int | ||||
| 								  (env-handle attribute value) | ||||
| 								  "odbc_sql_set_env_attr_int") | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-get-env-attr-int | ||||
| 								  (env-handle attribute value) | ||||
| 								  "odbc_sql_get_env_attr_int") | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-set-stmt-attr-int | ||||
| 								  (stmt-handle attribute value) | ||||
| 								  "odbc_sql_set_stmt_attr_int") | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-set-stmt-attr-string | ||||
| 								  (stmt-handle attribute value) | ||||
| 								  "odbc_sql_set_stmt_attr_string") | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-get-stmt-attr-int | ||||
| 								  (stmt-handle attribute) | ||||
| 								  "odbc_sql_get_stmt_attr_int") | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-get-stmt-attr-string | ||||
| 								  (stmt-handle attribute) | ||||
| 								  "odbc_sql_get_stmt_attr_string") | ||||
| 
 | ||||
| ;;; PART 4 | ||||
| 
 | ||||
| ;;; PART 5 | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-prepare | ||||
| 								  (stmt-handle stmt-txt) | ||||
| 								  "odbc_sql_prepare") | ||||
| 
 | ||||
| ;;; PART 6 | ||||
| (import-lambda-definition odbc-sql-execute | ||||
| 								  (stmt-handle) | ||||
| 								  "odbc_sql_execute") | ||||
| 
 | ||||
| 
 | ||||
| ;;; PART 7 | ||||
| 
 | ||||
| ;;; PART 8 | ||||
| 
 | ||||
| ;;; PART 9 | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-free-statement | ||||
| 								  (stmt-handle option) | ||||
| 								  "odbc_sql_free_statement") | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-close-cursor | ||||
| 								  (stmt-handle) | ||||
| 								  "odbc_sql_close_cursor") | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-cancel | ||||
| 								  (stmt-handle) | ||||
| 								  "odbc_sql_cancel") | ||||
| 
 | ||||
| ;;; PART 10 | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-disconnect | ||||
| 								  (conn-handle) | ||||
| 								  "odbc_sql_disconnect") | ||||
| 
 | ||||
| (import-lambda-definition odbc-sql-free-handle | ||||
| 								  (handle-type handle) | ||||
| 								  "odbc_sql_free_handle") | ||||
		Loading…
	
		Reference in New Issue
	
	 eknauel
						eknauel