ͼËÄ£ºDSNµÄÉèÖÃ
ͼËÄ£ºDSNµÄÉèÖÃ
ÎÒÕâÀïʹÓõÄÊÇMySQLµÄÊý¾Ý¿âÇý¶¯£¬²»Í¬µÄÊý¾Ý¿â£¬Õâ¸ö´°¿ÚµÄÄÚÈÝ»áÓÐËù²»Í¬¡£NameÊÇÊý¾ÝÔ´µÄÃû³Æ£¬DescriptionÊÇÃèÊö£¬Server¿ÉÒÔÑ¡Ôñ·þÎñÆ÷£¬Èç¹û±¾»úÆô¶¯ÁËMySQL¾Í¿ÉÒÔÑ¡Ôñlocalhost£¬Èç¹ûPortºÍSocketÓÐÌØÊâÒªÇó£¬ÔÙ¸ù¾Ýʵ¼ÊÇé¿ö½øÐÐÐ޸ģ¬DatabaseÊÇÓÃÀ´Ñ¡ÔñÊý¾Ý¿âµÄ£¬ÏÂÀ²Ëµ¥²»Ò»¶¨°üº¬ËùÓеÄÊý¾Ý¿â£¬Äã¿ÉÒÔ°Ñ×Ô¼ºÒѾ´´½¨ºÃµÄÊý¾Ý¿âÃû³ÆÌîдÔÚÕâÀï¡£¶¼ÅäÖúÃÖ®ºó£¬µã»÷"¡Ì"±£´æÍ˳ö¡£
ÕâÑùLinux/UnixϵÄODBCÊý¾ÝÔ´¾ÍÒѾÉèÖúÃÁË£¬´ó¼Ò»¹¿ÉÒÔÔÚODBCConfig³ÌÐòµÄStatusÀ¸Öв鿴ODBCµÄʹÓÃÇé¿ö£¬ÔÚAdvancedÀ¸ÖÐÉèÖÃÊÇ·ñ×öÈÕÖ¾»òÕ߯ô¶¯Á¬½Ó³Ø£¬ÔÚAboutÀ¸ÖУ¬ÓÐÒ»¸öLinux/Unix ODBCµÄʾÒâͼ£¬ÔÚCredits°´Å¥ÖпÉÒÔ¿´µ½ËùÓпª·¢ÕßµÄÃû×ÖµÄÁÐ±í¡£ ODBCConfig³ÌÐòÖÐËùÓÐÓйØÊý¾Ý¿âÇý¶¯³ÌÐòµÄÐÅÏ¢±»·ÅÔÚodbcinst.ini£¨ÔÚ/etcÏ£©ÎļþÖУ¬ÓйØDSNµÄÐÅÏ¢±»·ÅÔÚodbc.ini£¨ÔÚ/etcÏ£©ÎļþÖУ¬´ó¼ÒÓÐÐËȤµÄ»°£¬¿ÉÒÔ×Ô¼ºÈ¥¹Û²ìһϡ£
µÚÈý²½£ºÊ¹ÓÃDataManager³ÌÐòä¯ÀÀÊý¾Ý¿â
ÔËÐÐDataManager³ÌÐòÖ®ºó¾Í¿ÉÒԲ鿴Drivers¡¢System DSNºÍUser DSNÕ⼸ÏîÄÚÈÝ£¬£¬ÔÚä¯ÀÀÊý¾Ý¿âµÄʱºò£¬¿ÉÒÔÔÚÓÒÃæµÄSQLÀ¸ÖÐÊäÈëSQLÓï¾ä£¬È»ºóµã»÷ÈËÐΰ´Å¥¾Í¿ÉÒÔÔËÐÐSQLÓï¾ä£¬ÔËÐнá¹û»áÔÚResultsÒ»À¸ÖÐÏÔʾ³öÀ´£¬¾ßÌåÇé¿ö¿ÉÒÔ¼ûÏÂͼ£º
ͼÎ壺ʹÓÃDataManagerä¯ÀÀÊý¾Ý¿â
ͼÎ壺ʹÓÃDataManagerä¯ÀÀÊý¾Ý¿â
µÚËIJ½£ºÊ¹ÓÃisql³ÌÐò²é¿´Êý¾Ý¿â
unixODBC»¹ÌṩÁËÃüÁį̂ϲ鿴Êý¾Ý¿âµÄ³ÌÐò£¬Õâ¾ÍÊÇisql£¬Ó÷¨ÈçÏ£º
isql DSN [UID [PWD]] [options]
DSN Êý¾ÝÔ´Ãû³Æ
UID Óû§ID
PWD Óû§ÃÜÂë
Options£º
-b Åú´¦Àí£¬Ã»ÓÐÌáʾ·ûµÄģʽ
-dx ÉèÖÃÁÐÖ®¼äµÄ·Ö¸ô·ûΪx
-w ½«²éѯ½á¹ûÊä³öΪHTML¸ñʽ
-c µÚÒ»ÐÐÊä³öÁÐÃû
--version Êä³öisqlµÄ°æ±¾ºÅ
ËÄ¡¢ Linux/UnixÏÂODBCµÄ±à³Ì£º
1¡¢Ê¹ÓÃunixODBCÌṩµÄODBC API½øÐбà³Ì£º
ÔÚ½øÐбà³Ì֮ǰ£¬ÎÒÃÇÀ´¿´Ò»ÏÂODBC APIÖеij£ÓÃÊý¾ÝÀàÐÍÓëÎÒÃÇÔÚCÓïÑÔÖÐʹÓõÄÊý¾ÝÀàÐ͵ĶÔÓ¦¹ØÏµ£º
ÀàÐͱêʶ·û ODBCÊý¾ÝÀàÐÍ CÊý¾ÝÀàÐÍ
SQL_C_CHAR SQLCHAR * unsigned char *
SQL_C_SSHORT SQLSMALLINT short int
SQL_C_USHORT SQLUSMALLINT unsigned short int
SQL_C_SLONG SQLINTEGER long int
SQL_C_FLOAT SQLREAL float
SQL_C_DOUBLE SQLDOUBLE, SQLFLOAT double
SQL_C_BINARY SQLCHAR * unsigned char *
SQL_C_TYPE_DATE SQL_DATE_STRUCT struct tagDATE_STRUCT {SQLSMALLINT year; SQLUSMALLINT month; SQLUSMALLINT day; } DATE_STRUCT;
SQL_C_TYPE_TIME SQL_TIME_STRUCT struct tagTIME_STRUCT {SQLUSMALLINT hour; SQLUSMALLINT minute; SQLUSMALLINT second; } TIME_STRUCT;
ÎÒÃÇÕâÀïʹÓõÄÊý¾Ý¿âÃû³ÆÎªtest£¨DSN£©£¬Õâ¸öDSNʹÓõÄÓû§ÃûÊÇroot£¬ÃÜÂëΪ¿Õ£¬±íµÄÃû³ÆÊÇweb£¬×Ö¶ÎÇé¿öÈçÏ£º
>
×Ö¶ÎÃû Êý¾ÝÀàÐÍ
id integer
name char(40)
size integer
µÚÒ»£ºÉ趨ODBC»·¾³¾ä±ú²¢ÉèÖòÎÊý
Ê×ÏÈÎÒÃÇÐèÒªÉùÃ÷Ò»¸öODBC»·¾³¾ä±ú£¨SQLHENV£©£¬Ëü¿ÉÒÔÓÃÀ´»ñµÃÓйصÄODBC»·¾³ÐÅÏ¢£¬ÎÒÃÇÐèÒªµ÷ÓÃSQLAllocHandle ( SQL_HANDLE_ENV, SQL_NULL_HANDLE, &V_OD_Env )À´»ñµÃÕâ¸ö¾ä±ú£¬V_OD_Env¾ÍÊÇÒª·ÖÅäµÄSQLHENVÀàÐ͵Ļ·¾³¾ä±ú¡£
·ÖÅäºÃ¾ä±úÖ®ºó£¬Äã¸øËüÐèÒªÉ趨ËùʹÓõÄODBC°æ±¾£¬Äã¿ÉÒÔµ÷ÓÃSQLSetEnvAttr ( V_OD_Env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0 )£¬SQL_ATTR_ODBC_VERSIONÊÇ´æ·ÅÄ㶨ÒåµÄODBC°æ±¾ºÅµÄ±äÁ¿£¬SQL_OV_ODBC3Ôò˵Ã÷ÄãµÄ³ÌÐòʹÓõÄÊÇODBC 3.0¡£
µÚ¶þ£ºÉ趨Á¬½Ó¾ä±ú²¢ÉèÖó¬Ê±²ÎÊý
ÎÒÃÇÐèÒªÉùÃ÷Ò»¸öÁ¬½Ó¾ä±ú£¨SQLHDBC£©£¬ÓÃÀ´´æ·ÅÊý¾Ý¿âÁ¬½ÓÐÅÏ¢µÄ£¬µ÷ÓÃSQLAllocHandle ( SQL_HANDLE_DBC, V_OD_Env, &V_OD_hdbc )»ñµÃÁ¬½Ó¾ä±ú£¬V_OD_hdbc¾ÍÊÇÒª·ÖÅäµÄSQLHDBCÀàÐ͵ÄÁ¬½Ó¾ä±ú¡£
·ÖÅäºÃÖ®ºó£¬ÎÒÃÇ¿ÉÒÔµ÷ÓÃSQLSetConnectAttr ( V_OD_hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER *)5, 0 )À´É趨Á¬½Ó³¬Ê±²ÎÊý¡£
µÚÈý£ºÁ¬½ÓÊý¾Ý¿â
µ÷ÓÃSQLConnect ( V_OD_hdbc, (SQLCHAR*) "Test", SQL_NTS, (SQLCHAR*) "root", SQL_NTS, (SQLCHAR*) "", SQL_NTS )Á¬½ÓÎÒÇ°ÃæÌáµ½µÄÊý¾Ý¿â£¬ÐèÒªÉ趨Èý¸ö²ÎÊý£¬¾ÍÊÇÊý¾Ý¿âÃû³Æ¡¢Óû§ÃûºÍÃÜÂ루ÒòΪÎÒµÄÊý¾Ý¿âÃÜÂëΪ¿Õ£¬ËùÒÔÕâÀïµÄÃÜÂëҲΪ¿Õ£©£¬ºóÃæµÄSQL_NTSµÄλÖÃÓ¦¸ÃдÈëÕâЩ²ÎÊýµÄ³¤¶È£¬Èç¹ûдµÄÊÇSQL_NTS¾ÍÊÇÈÃSQLConnectÀ´¾ö¶¨²ÎÊýµÄ³¤¶È¡£
µÚËÄ£º·ÖÅäSQLÓï¾äµÄ¾ä±ú²¢½øÐвéѯ£º
ÐèÒªÉùÃ÷Ò»¸öSQLÓï¾äµÄ¾ä±ú£¨SQLHSTMT£©£¬ÓÃÀ´´æ·ÅSQLÓï¾äÐÅÏ¢µÄ£¬µ÷ÓÃSQLAllocHandle ( SQL_HANDLE_STMT, V_OD_hdbc, &V_OD_hstmt )À´»ñµÃÕâ¸ö¾ä±ú£¬V_OD_hstmt¾ÍÊÇÎÒÃÇÒª·ÖÅäµÄSQLHSTMTÀàÐ͵ÄSQLÓï¾ä¾ä±ú¡£
ÎÒÃǵIJéѯÓï¾äÊÇ£º
SELECT name, id FROM web ORDER BY id
Ö´ÐÐÕâÌõ²éѯÓï¾äÖ®ºó£¬²éѯ½á¹û¿ÉÄÜÓкܶàÐУ¬µ«Ã¿ÐÐÖ»ÓÐÁ½ÁУ¬·Ö±ð¶ÔÓ¦nameºÍid£¬ËüÃǵÄÊý¾ÝÀàÐÍΪintegerºÍchar*£¬ÔÚODBCÖеÄÊý¾ÝÀàÐͱêʶ·ûΪSQL_C_ULONGºÍSQL_C_CHAR¡£ÎÒÃÇÐèÒªÏÈÉùÃ÷ÕâÑùµÄÁ½¸ö±äÁ¿À´´æÖü²éѯ½á¹û£º
SQLINTEGER V_OD_id;
char V_OD_buffer[200];
È»ºóÎÒÃÇÐèҪʹÓÃSQLBindColº¯Êý°Ñ²éѯ½á¹ûºÍÎÒÃǶ¨ÒåµÄ±äÁ¿½øÐа󶨣º
SQLBindCol(V_OD_hstmt,1,SQL_C_CHAR, &V_OD_buffer,150,&V_OD_err);
SQLBindCol(V_OD_hstmt,2,SQL_C_ULONG,&V_OD_id,150,&V_OD_err);
ÕâÀïµÄV_OD_errÊÇÓÃÀ´´æ·Å´íÎóÐÅÏ¢±àºÅµÄ±äÁ¿£¬ÀàÐÍÒ²ÊÇSQLINTEGER¡£
½ÓÏÂÀ´£¬ÎÒÃǵ÷ÓÃSQLExecDirectÀ´½øÐвéѯ£º
SQLExecDirect ( V_OD_hstmt, "SELECT dtname,iduser FROM web order by iduser", SQL_NTS );
ÎÒÃÇ¿ÉÒÔÓÃSQLNumResultCols ( V_OD_hstmt, &V_OD_colanz )À´»ñµÃ½á¹ûµÄÁÐÊý£¬Ò²¿ÉÒÔÓÃSQLRowCount( V_OD_hstmt, &V_OD_rowanz )À´»ñµÃ½á¹ûµÄÌõÊý£¬V_OD_colanzºÍV_OD_rowanz·Ö±ð´æ´¢ÏàÓ¦µÄ½á¹û£¬ÀàÐÍ·Ö±ðΪSQLSMALLINTºÍSQLINTEGER¡£
ÔÚ¶ÁÈ¡½á¹û֮ǰ£¬ÎÒÃÇÐèÒªµ÷ÓÃSQLFetch ( V_OD_hstmt )Óï¾ä£¬Õâ¸öÓï¾ä¿ÉÒÔÓÃÀ´»ñµÃµÚÒ»Ìõ½á¹ûÒ²¿ÉÒÔÓÃÀ´¶¼ÏÂÒ»Ìõ£¬ÓеãÏñnextµÄ¸Ð¾õ¡£È»ºóÎÒÃǾͿÉÒÔÔÚV_OD_idºÍV_OD_bufferÀïÃæ»ñµÃÿÌõ¼Ç¼µÄ½á¹ûÁË¡£
µÚÎ壺¹ØÓڹرÕÁ¬½ÓºÍÊͷžä±ú
¹Ø±ÕÊý¾Ý¿âµÄÁ¬½Ó£¬µ÷ÓÃSQLDisconnect ( V_OD_hdbc )¾Í¿ÉÒÔÁË£¬µ«ÔڹرÕÊý¾Ý¿â֮ǰÐèÒªÏÈÊÍ·ÅSQLÓï¾äµÄ¾ä±ú£¬¶øÇÒÔڹرÕÊý¾Ý¿âÖ®ºóÓ¦¸ÃÊÍ·ÅÁ¬½Ó¾ä±úºÍODBC»·¾³¾ä±ú£¬Óï¾äÈçÏ£¨°´Õý³£µÄ˳Ðò£©£º
SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt);
SQLDisconnect(V_OD_hdbc);
SQLFreeHandle(SQL_HANDLE_DBC,V_OD_hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
µÚÁù£º¹ØÓÚÉÏÊöÇé¿öÖеĴíÎóÐÅÏ¢´¦Àí
ÎÒÃÇÐèÒª¶¨ÒåÁ½¸ö±äÁ¿£º
long V_OD_erg;
SQLINTEGER V_OD_err;
SQLAllocHandle¡¢SQLSetEnvAttr¡¢SQLSetConnectAttr¡¢SQLConnect¡¢SQLExecDirect¡¢SQLNumResultColsºÍSQLRowCountµÄµ÷Óýá¹û¶¼¿ÉÒÔÓÃV_OD_ergÀ´´æ´¢£¬V_OD_err¿ÉÒÔ»ñµÃSQLBindColÖеĴíÎóÐÅÏ¢¡£
µÚÆß£º»ñµÃ±¾»úµÄDSNÐÅÏ¢
ÎÒÃÇ¿ÉÒÔÔÚÉùÃ÷SQLHENV¾ä±úÖ®ºó£¬Ê¹ÓÃSQLDataSourcesº¯ÊýÀ´»ñµÃ±¾»úµÄDSNÐÅÏ¢¡£³ÌÐòÈçÏ£º
void OD_ListDSN(void)
{
char l_dsn[100],l_desc[100];
short int l_len1,l_len2,l_next;
l_next=SQL_FETCH_FIRST;
while( SQLDataSources(V_OD_Env,l_next,l_dsn, sizeof(l_dsn),
&l_len1, l_desc, sizeof(l_desc), &l_len2) == SQL_SUCCESS)
{
printf("Server=(%s) Beschreibung=(%s)
",l_dsn,l_desc);
l_next=SQL_FETCH_NEXT;
}
}
l_next±äÁ¿ÊÇÓÃÀ´Ö¸¶¨ÎÒÃÇËùÒª»ñµÃµÄDSNµÄÀà±ð£º
SQL_FETCH_FIRST É趨SQLDataSources()º¯ÊýÕÒµ½µÚÒ»¸ö¿ÉÓõÄÊý¾ÝÔ´£¨¿ÉÒÔÊÇUser DSN£¬Ò²¿ÉÒÔÊÇSysterm DSN£©
SQL_FETCH_FIRST_USER É趨SQLDataSources()º¯ÊýÕÒµ½µÚÒ»¸öUser DSN
SQL_FETCH_FIRST_SYSTEM É趨SQLDataSources()º¯ÊýÕÒµ½µÚÒ»¸öSystem DSN
SQL_FETCH_NEXT ÕÒµ½ÏÂÒ»¸öÊý¾ÝÔ´£¬ÖÁÓÚÊý¾ÝÔ´ÀàÐÍÔòÒª¸ù¾ÝÇ°ÃæµÄ¶¨Òå
µ½ÕâÀÎÒÃÇÔÚUnixµÄCÓïÑÔÏÂÃæ½øÐÐODBC±à³ÌÒѾ½²Í꣬ÉÏÊöODBC APIÐèÒªÒýÓÃÒÔϼ¸¸öÍ·Îļþ£¨ÕâЩÎļþÒѾ°²×°µ½/usr/includeÏÂÁË£©£º
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>
ÁíÍâÈç¹û´ó¼ÒʹÓÃGTK½øÐбà³Ì£¬ÓÉÓÚµ½Ä¿Ç°ÎªÖ¹GTK»¹Ã»ÓмÓÈëרÃÅ´¦ÀíÊý¾Ý¿âµÄ²¿¼þ£¬ËùÒÔ´ó¼Ò¿ÉÒÔÔÚGTKÖе÷ÓÃÉÏÊöµÄODBC API¼´¿É¡£
ÕâÀ︽ÉÏÀý³Ì¹©´ó¼Ò²Î¿¼Ñ§Ï°£º
/* odbc.c
testing unixODBC
*/
#include <stdlib.h>
#include <stdio.h>
#include <odbc/sql.h>
#include <odbc/sqlext.h>
#include <odbc/sqltypes.h>
SQLHENV V_OD_Env; // Handle ODBC environment
long V_OD_erg; // result of functions
SQLHDBC V_OD_hdbc; // Handle connection
char V_OD_stat[10]; // Status SQL
SQLINTEGER V_OD_err,V_OD_rowanz,V_OD_id;
SQLSMALLINT V_OD_mlen,V_OD_colanz;
char V_OD_msg[200],V_OD_buffer[200];
int main(int argc,char *argv[])
{
// 1. allocate Environment handle and register version
V_OD_erg=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&V_OD_Env);
if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
{
printf("Error AllocHandle
"

;
exit(0);
}
V_OD_erg=SQLSetEnvAttr(V_OD_Env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
{
printf("Error SetEnv
"

;
SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
exit(0);
}
// 2. allocate connection handle, set timeout
V_OD_erg = SQLAllocHandle(SQL_HANDLE_DBC, V_OD_Env, &V_OD_hdbc);
if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
{
printf("Error AllocHDB %d
",V_OD_erg);
SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
exit(0);
}
SQLSetConnectAttr(V_OD_hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER *)5, 0);
// 3. Connect to the datasource "web"
V_OD_erg = SQLConnect(V_OD_hdbc, (SQLCHAR*) "Test", SQL_NTS,
(SQLCHAR*) "root", SQL_NTS,
(SQLCHAR*) "", SQL_NTS);
if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
{
printf("Error SQLConnect %d
",V_OD_erg);
SQLGetDiagRec(SQL_HANDLE_DBC, V_OD_hdbc,1,
V_OD_stat, &V_OD_err,V_OD_msg,100,&V_OD_mlen);
printf("%s (%d)
",V_OD_msg,V_OD_err);
SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
exit(0);
}
printf("Connected !
"

;
V_OD_erg=SQLAllocHandle(SQL_HANDLE_STMT, V_OD_hdbc, &V_OD_hstmt);
if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
{
printf("Fehler im AllocStatement %d
",V_OD_erg);
SQLGetDiagRec(SQL_HANDLE_DBC, V_OD_hdbc,1, V_OD_stat,&V_OD_err,V_OD_msg,100,&V_OD_mlen);
printf("%s (%d)
",V_OD_msg,V_OD_err);
SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
exit(0);
}
SQLBindCol(V_OD_hstmt,1,SQL_C_CHAR, &V_OD_buffer,150,&V_OD_err);
SQLBindCol(V_OD_hstmt,2,SQL_C_ULONG,&V_OD_id,150,&V_OD_err);
V_OD_erg=SQLExecDirect(V_OD_hstmt,"SELECT dtname,iduser FROM web order by iduser",SQL_NTS);
if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
{
printf("Error in Select %d
",V_OD_erg);
SQLGetDiagRec(SQL_HANDLE_DBC, V_OD_hdbc,1, V_OD_stat,&V_OD_err,V_OD_msg,100,&V_OD_mlen);
printf("%s (%d)
",V_OD_msg,V_OD_err);
SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt);
SQLFreeHandle(SQL_HANDLE_DBC,V_OD_hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
exit(0);
}
V_OD_erg=SQLNumResultCols(V_OD_hstmt,&V_OD_colanz);
if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
{
SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt);
SQLDisconnect(V_OD_hdbc);
SQLFreeHandle(SQL_HANDLE_DBC,V_OD_hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
exit(0);
}
printf("Number of Columns %d
",V_OD_colanz);
V_OD_erg=SQLRowCount(V_OD_hstmt,&V_OD_rowanz);
if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
{
printf("Number of RowCount %d
",V_OD_erg);
SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt);
SQLDisconnect(V_OD_hdbc);
SQLFreeHandle(SQL_HANDLE_DBC,V_OD_hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
exit(0);
}
printf("Number of Rows %d
",V_OD_rowanz);
V_OD_erg=SQLFetch(V_OD_hstmt);
while(V_OD_erg != SQL_NO_DATA)
{
printf("Result: %d %s
",V_OD_id,V_OD_buffer);
V_OD_erg=SQLFetch(V_OD_hstmt);
} ;
SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt);
SQLDisconnect(V_OD_hdbc);
SQLFreeHandle(SQL_HANDLE_DBC,V_OD_hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
return(0);
}
2£®QTϽøÐÐODBC±à³Ì
QT 3.0ÌṩÁËData Table¡¢Data BrowserºÍData ViewÈý¸öÓëÊý¾Ý¿âÏà¹ØµÄ¿Ø¼þ¡£Äã¿ÉÒÔÔÚQTµÄProjectÉèÖÃÄãÒªÁ¬½ÓµÄÊý¾Ý¿â£¬DriverÒ»À¸ÖÐÑ¡ÔñQODBC3¼´¿É£¬ÆäËüÑ¡ÏîÄãÒ»¿´¾ÍÃ÷°×ÁË¡£ÉÏÊöµÄÈý¸öÊý¾Ý¿â¿Ø¼þµÄʹÓ÷½·¨¿ÉÒԲμûQTÖÐÏàÓ¦Îĵµ£¬Ò²ºÜºÃʹÓõġ£
²Î¿¼×ÊÁÏ£º
1. ΢ÈíµÄODBCÖ÷Ò³£º
http://www.microsoft.com/data/odbc/£»
2. UnixODBCµÄÖ÷Ò³£º
http://www.unixodbc.org£»
3. FreeODBCµÄÖ÷Ò³£º
http://www.jepstone.net/FreeODBC/£»
4. EasySoftµÄÖ÷Ò³£º
http://www.easysoft.com£»
5. TrollTechµÄQT 3.0ÎĵµÖ÷Ò³£º
http://doc.trolltech.com/3.0/¡£
¸öÈ˼ò½é£º
ÆëÁÁ£¬ÓÐÐÒÓÚ2001Äê²ÎÓëHappy Linux 3.0µÄÑз¢¹¤×÷£¬¶ÔLinuxÇéÓжÀÖÓ£¬ÏÖÔÚ´ÓÊÂLinux/Windows¿çƽ̨ӦÓõĿª·¢£¬»¶ÓÄúͨ¹ýµç×ÓÓʼþ
cavendish@eyou.com¸úËûÁªÏµ£¬Ï£ÍûÄÜÓë¸ü¶àµÄÅóÓѽ»Á÷¹ØÓÚLinux·½ÃæµÄ֪ʶ¡£
µ½Ò³Ê×
Äú¶ÔÕâÆªÎÄÕµĿ´·¨ÈçºÎ£¿
Õæ°ô£¡(5) ºÃ²ÄÁÏ (4) Ò»°ã£»ÉÐ¿É (3) ÐèÌá¸ß (2) Ì«²î£¡ (1)
½¨Ò飿