1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
5
<title>psqlODBC HOWTO - Ch</title>
8
<body bgcolor="#ffffff" text="#000000" link="#ff0000" vlink="#a00000" alink="#0000ff">
10
<h1>psqlODBC HOWTO - Ch</h1>
15
Author: Wayne Cheng (wayne@softintegration.com)<br>
16
Release Date: 23 September 2003<br>
17
Description: Example based Mini-Howto on Accessing PostgreSQL from Ch
20
Ch is a C/C++ interpreter from <a href="http://www.softintegration.com">http://www.softintegration.com</a>.<br>
21
It is designed for cross-platform scripting, shell programming,
22
2D/3D plotting, numerical computing, and embedded scripting.
25
Requirements to get the code to work:
29
<li>Ch Standard Edition or Professional Edition</li>
30
<li>Ch ODBC Toolkit.</li>
31
<li>IODBC, UNIXODBC or Microsoft ODBC manager.</li>
32
<li>A PostgreSQL datasource.</li>
35
<b>How to run ODBC code in Ch</b><br>
36
You should be able to use the simple.c scripts, start Ch shell first.
43
Standard edition, version 4.0.0.11291
44
(C) Copyright 2001-2003 SoftIntegration, Inc.
45
http://www.softintegration.com
46
/home/wcheng> cd $CHHOME/package/iodbc/demos
47
/usr/local/ch/package/iodbc/demos> ls
49
/usr/local/ch/package/iodbc/demos> ./simple.c
53
SQLSetConnectAttr() ok
54
/usr/local/ch/package/iodbc/demos> cat simple.c
56
/**************************** simple.c *****************************/
57
#include <sqlext.h>
58
#include <stdio.h>
60
void ODBC_error ( /* Get and print ODBC error messages */
61
SQLHENV henv, /* ODBC Environment */
62
SQLHDBC hdbc, /* ODBC Connection Handle */
63
SQLHSTMT hstmt) /* ODBC SQL Handle */
66
UCHAR errmsg[SQL_MAX_MESSAGE_LENGTH];
69
RETCODE rc = SQL_SUCCESS;
71
while ( rc != SQL_NO_DATA_FOUND)
73
rc = SQLError(henv, hdbc, hstmt,
74
sqlstate, &nativeerr, errmsg,
75
SQL_MAX_MESSAGE_LENGTH - 1, &actualmsglen);
77
if (rc == SQL_ERROR) {
78
printf ("SQLError failed!\n");
82
if (rc != SQL_NO_DATA_FOUND) {
83
printf ("SQLSTATE = %s\n", sqlstate);
84
printf ("NATIVE ERROR = %d\n", nativeerr);
85
errmsg[actualmsglen] = '\0';
86
printf ("MSG = %s\n\n", errmsg);
89
if (hdbc != SQL_NULL_HDBC)
91
SQLFreeHandle (SQL_HANDLE_DBC, hdbc);
93
if (henv != SQL_NULL_HENV)
95
SQLFreeHandle (SQL_HANDLE_ENV, henv);
101
SQLHENV henv = SQL_NULL_HENV;
102
SQLHDBC hdbc = SQL_NULL_HDBC;
103
SQLHSTMT hstmt = SQL_NULL_HSTMT;
104
RETCODE rc = SQL_SUCCESS;
106
rc = SQLAllocHandle (SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
110
printf("SQLAllocHandle() OK\n");
111
rc = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3,0);
114
printf("SQLSetEnvAttr() ok\n");
115
rc = SQLAllocHandle (SQL_HANDLE_DBC, henv, &hdbc);
116
if ( rc != SQL_ERROR)
118
printf("SQLAllocHandle() ok\n");
119
rc = SQLSetConnectAttr(hdbc, SQL_ATTR_AUTOCOMMIT, SQL_AUTOCOMMIT_OFF,0);
122
printf("SQLSetConnectAttr() ok\n");
123
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
124
SQLFreeHandle(SQL_HANDLE_ENV, henv);
132
ODBC_error (henv, hdbc, hstmt);
b'\\ No newline at end of file'