??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品欧美亚洲韩国日本久久 ,久久久无码精品亚洲日韩京东传媒,99久久免费国产精品http://www.shnenglu.com/prayer/category/8520.html在一般中L卓越zh-cnThu, 21 Mar 2019 13:20:21 GMTThu, 21 Mar 2019 13:20:21 GMT60db2Load API - Load data into a tablehttp://www.shnenglu.com/prayer/archive/2010/07/23/121108.htmlPrayerPrayerFri, 23 Jul 2010 04:26:00 GMThttp://www.shnenglu.com/prayer/archive/2010/07/23/121108.htmlhttp://www.shnenglu.com/prayer/comments/121108.htmlhttp://www.shnenglu.com/prayer/archive/2010/07/23/121108.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/121108.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/121108.html阅读全文

Prayer 2010-07-23 12:26 发表评论
]]>
Precompiler refuse int type in EXEC SQL BEGIN DECLARE SECTION http://www.shnenglu.com/prayer/archive/2010/01/20/106093.htmlPrayerPrayerWed, 20 Jan 2010 15:14:00 GMThttp://www.shnenglu.com/prayer/archive/2010/01/20/106093.htmlhttp://www.shnenglu.com/prayer/comments/106093.htmlhttp://www.shnenglu.com/prayer/archive/2010/01/20/106093.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/106093.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/106093.html
Quote:
Originally Posted by Dave Rush
I have a problem compiling my embedded sql:

db2 prep Dbprog.sqc bindfile gave me the following error.

172 SQL0008N The token "int" found in a host variable
declaration is not valid.


Is seems that the precompiler do not accept the int declarations, it accept only short or long. Is there a way to tell the precompiler to accept int variable like this

EXEC SQL BEGIN DECLARE SECTION;
int maj = 0;
int min = 0;
char pch = 0;
EXEC SQL END DECLARE SECTION;



Thanks
No, long and short only. I assume this is because "int" can be different things to different compilers, etc.

Ҏlong实可以了?br>

Prayer 2010-01-20 23:14 发表评论
]]>
游标中rollback引v游标关闭 http://www.shnenglu.com/prayer/archive/2009/12/16/103305.htmlPrayerPrayerWed, 16 Dec 2009 02:47:00 GMThttp://www.shnenglu.com/prayer/archive/2009/12/16/103305.htmlhttp://www.shnenglu.com/prayer/comments/103305.htmlhttp://www.shnenglu.com/prayer/archive/2009/12/16/103305.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/103305.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/103305.html
保持游标打开的方法是在定义游标时加上with hold选项
但是Q我declare 游标时用了with hold选项--只对commit有效?br>
E序D:
declare test_cur cursor with hold for
     select .... from A where ... order by ... with ur;

open test_cur;
while( 1 ){
    fecth test_cur into ......;
    判断SQLCODE

    begin_work();           /* 其实是讄了一个标?*/
    SQL 操作Q修改其他表或者游标所在表的数据?br>   Ҏl果判断 commit or rollback?nbsp;   /* 此处如果rollback 游标被关?*/
}

异常状态:
如果游标中进行了SQL操作Q根据结果判断ƈrollbackӞ
下一ơfetchӞ会提C?501 没有打开游标。从而报错退出?br>


q种Ҏ是否可行

游标改用普通游标?br>游标取出当前记录后,fork子进E?br>主进E只从游标取数?br>子进E进行事务、处理、判断、修改状态、提交等{?br>主进E等子进E的l束信号Q然后取下一条记录?br>E序D:
declare test_cur cursor with hold for
     select .... from A where ... order by ... with ur;

open test_cur;
while( 1 ){
    fecth test_cur into ......;
    判断SQLCODE

    pid = fork();

    if( pid == 0 ) {    /* 子进E干z?*/
            sqledtin( &sqlca );
            setsid();
            signal( SIGHUP, SIG_IGN );

            db_disconn( G_mdb_name );
            begin_work();           /* 其实是讄了一个标?*/
            SQL 操作Q修改其他表或者游标所在表的数据?br>        Ҏl果判断 commit or rollback?nbsp;  
        db_disconn();
            exit();
    }

    /* 主进E等待子q程l束 */
}
close test_cur;

如果是两个不同的事务的话Q你用CLI来写比较方便

在cursor内部讄一个savepoint, rollback时用
rollback to savepoint a;



Prayer 2009-12-16 10:47 发表评论
]]>
全面了解ODBC技?/title><link>http://www.shnenglu.com/prayer/archive/2009/09/17/96512.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Thu, 17 Sep 2009 04:14:00 GMT</pubDate><guid>http://www.shnenglu.com/prayer/archive/2009/09/17/96512.html</guid><wfw:comment>http://www.shnenglu.com/prayer/comments/96512.html</wfw:comment><comments>http://www.shnenglu.com/prayer/archive/2009/09/17/96512.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/prayer/comments/commentRss/96512.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/prayer/services/trackbacks/96512.html</trackback:ping><description><![CDATA[<p>目前Q众多的厂商推出了行行色色的数据库系l,它们在性能、h格和应用范围上各有千U。一个综合信息系l的各部门由于需求差异等原因Q往往会存在多U数据库Q它们之间的互连讉K成ؓ一个棘手的问题Q特别是当用户需要从客户机端讉K不同的服务器时?br>微Y提出的开攑ּ数据库互q(Open-DataBase-ConnectivityQ即ODBCQ成为目前一个强有力解决[本文q?a >www.gwdq.com</a>公文大全<a >www.gwdq.cn</a>攉整理]ҎQƈ逐步成ؓWindows和Macintoshq_上的标准接口Qƈ推动了这斚w的开放性和标准化?br>一、ODBC的生和发展<br>关系型数据库产生后很快就成ؓ数据库系l的L产品Q由于每个DBMS厂商都有自己的一套标准,Z很早׃生了标准化的xQ于是生了SQLQ由于其语法规范逐渐Zh所接受Q成为RDBMS上的d语言。最初,各数据库厂商Z解决[本文q?a >www.gwdq.com</a>公文大全<a >www.gwdq.cn</a>攉整理]互连的问题,往往提供嵌入式SQL APIQ用户在客户机端要操作系l中的RDBMSӞ往往要在E序中嵌入SQL语句q行预编译。由于不同厂商在数据格式、数据操作、具体实现甚臌法方面都h不同E度的差异,所以彼此不能兼宏V?br>长期以来Q这UAPI的非规范情况令用户和RDBMS厂商都不能满意。在80q代后期Q一些著名的厂商包括Oracle、Sybase、Lotus、Ingres、Informix、HP、DEC{结成了SQL Access GroupQ简USAGQ,提出了SQL API的规范核心:调用U接口(Call Level InterfaceQ,UCLI?br>1991q?1月,微Y宣布了ODBCQ次q推出可用版本?992q?月,推出了ODBC SDK 2.0版。ODBCZSAG的SQL CAE草案所规定的语法,共分为Core、Level 1?Level 2三种定义Q分别规范了22?6?3?1条命令,其中29条命令甚臌了SAG CLI中原有的定义Q功能强大而灵zR它q包括标准的错误代码集、标准的q接和登录DBMSҎ、标准的数据cd表示{?br>׃ODBC思想上的先进性,且没有同cȝ标准或品与之竞争,它一枝独UQ推出后仅仅两三q就受到了众多厂家与用户的青睐,成ؓ一U广为接受的标准。目前,已经?30多家独立厂商宣布了对ODBC的支持,常见的DBMS都提供了ODBC的驱动接口,q些厂商包括Oracle、Sybase、Informix、Ingres、IBM(DB/2)、DEC(RDB)、HP(ALLBASE/SQL)、Gupta、Borland(Paradox){。目前,ODBC已经成ؓ客户?服务器系l中的一个重要支持技术?br>二、ODBC的基本思想与特?br>ODBC的基本思想是ؓ用户提供单、标准、透明的数据库q接的公qE接口,开发厂商根据ODBC的标准去实现底层的驱动程序,q个驱动对用h透明的,q允许根据不同的DBMS采用不同的技术加以优化实玎ͼq就利于不断吸收新的技术而趋完善?br>q同时也是数据库驱动的思想Q它很类gWindows中打印驱动的思想。在Windows中,用户安装不同的打印驱动程序,使用同样一条打印语句或操作Q就可很Ҏ地实现在不同打印Z打印输出Q而不需要了解内部的具体原理。ODBC出现以后Q用户安装不同的DBMS驱动可用同LSQL语句实现在不同DBMS上进行同L操作Q而且无需预编译。ODBC带来了数据库q接方式的变革,如图1所C。在传统方式中,开发h员要熟悉多个DBMS及其APIQ一旦DBMS端出现变动,则往往D用户端系l重新编建或者源代码的修改,q给开发和l护工作带来了很大困难。在ODBC方式中,不管底层|络环境如何Q也无论采用何种DBMSQ用户在E序中都使用同一套标准代码,无需逐个了解各DBMS及其API的特点,源程序不因底层的变化而重新编建或修改Q从而减M开发维护的工作量,~短了开发周期?br>@@12W03500.GIF;? 数据库连接方式的转变@@<br>概括hQODBCh以下灉|的特点:<br>1. 使用L序有很高的互操作性,相同的目标代码适用于不同的DBMSQ?br>2. ׃ODBC的开放性,它ؓE序集成提供了便利,为客h/服务器结构提供了技术支持;<br>3. ׃应用与底层网l环境和DBMS分开Q简化了开发维护上的困难?br>三、ODBC的体pȝ构和实现<br>ODBC是依靠分层结构来实现的,如此可保证其标准性和开放性。图2所CZؓODBC的体pȝ构,它共分ؓ四层Q应用程序、驱动程序管理器、驱动程序和数据源。微软公司对ODBC规程q行了规范,它ؓ应用层的开发者和用户提供标准的函数、语法和错误代码{,微Yq提供了驱动E序理器,它在Windows中是一个动态链接库即ODBC.DLL。驱动程序层由微软、DBMS厂商或第三开发商提供Q它必须W合ODBC的规E,对于OracleQ它是O<br>本文来自: 公文大全(<a >www.gwdq.com</a>) 详细出处参考:<a >http://www.gwdq.com/lwzx/jsj/jsjll/146960.html</a><br>RA6WIN.DLLQ对于SQL ServerQ它是SQLSRVR.DLL?/p> <p><br>@@12W03501.GIF;? ODBC体系l构@@<br>下面我们详细介绍各层的功能?br>1. 应用E序?Application)<br>使用ODBC接口的应用程序可执行以下dQ?br>①请求与数据源的q接和会?SQLConnect)Q?br>②向数据源发送SQLh(SQLExecDirct或SQLExecute)Q?br>③对SQLh的结果定义存储区和数据格式;<br>④请求结果;<br>⑤处理错误;<br>⑥如果需要,把结果返回给用户Q?br>⑦对事务q行控制Q请求执行或回退操作(SQLTransact)Q?br>⑧终止对数据源的q接(SQLDisconnect)?br>2. 驱动E序理?Driver Manager)<br>由微软提供的驱动E序理器是带有输入库的动态连接库ODBC.DLLQ其主要目的是装入驱动程序,此外q执行以下工?<br>①处理几个ODBC初始化调用;<br>②ؓ每一个驱动程序提供ODBC函数入口点;<br>③ؓODBC调用提供参数和次序验证?br>3. 驱动E序(Driver)<br>驱动E序是实现ODBC函数和数据源交互的DLLQ当应用E序调用SQL Connect或者SQLDriver Connect函数Ӟ驱动E序理器装入相应的驱动E序Q它Ҏ自应用程序的ODBC函数调用q行应答Q按照其要求执行以下d:<br>①徏立与数据源的q接Q?br>②向数据源提交请求;<br>③在应用E序需求时Q{换数据格式;<br>④返回结果给应用E序Q?br>⑤将q行错误格式化ؓ标准代码q回Q?br>⑥在需要时说明和处理光标?br>以上q些功能都是对应用程序层功能的具体实现。驱动程序的配置方式可以划分Z下两U?br>(1)单层?single-tier) q种方式下,驱动E序要处理ODBC调用SQL语句Qƈ直接操纵数据库,因此h数据存取功能。这U配|最常见的是同一台微Z上异U数据库通过ODBC存取Q如在Powerbuilder中存取XBase、Excel、Paradox{数据文?如图3所C。@@12W03502.GIF;? 一层配|示意图@@<br>(2)多层?multiple-tier) q种配置中驱动程序仅仅处理ODBC调用Q而将SQL语句交给服务器执行,然后q回l果。这U情况往往是应用程序、驱动程序管理器、驱动程序驻留在客户机端Q而数据源和数据存取功能放在服务器端。譬如用Foxpro或Excel存取SQL Server或Oracle上的数据,如图4所C?br>@@12W03503.GIF;? 二层配置C意图@@<br>有时在以上两者之间加上网关以解决[本文q?a >www.gwdq.com</a>公文大全<a >www.gwdq.cn</a>攉整理]通信协议的{换等问题Q这旉动程序要请求先传送给|关Q如讉KDEC RDB和IBM AS/400时的配置,如图5所C?br>@@12W03504.GIF;? 三层配置C意图@@<br>4. 数据?br>数据源由用户惌存取的数据和它相关的操作pȝ、DBMS及网l环境组成?br>四、一致性?br>从应用程序观Ҏ看,最理想的情冉|每个数据源和驱动E序都支持同一套ODBC函数调用和SQL语句。但是由于Ş形色色的DBMS在实C有很大的差异Q它们所依赖的系l和环境也各不相同,在对ODBC支持的程度上׃一致。一致性?Conformance Levels)建立了对众多功能的标准划分,为应用程序和驱动E序提供帮助和选择的依据。它划定了驱动程序所支持的ODBC函数和SQL语句的范_我们可以用SQLGetInfo、SQLGetFunctions、SQLTypeInfo三个函数L驱动E序所支持的功能集。ODBC从API和SQL语法两方面划分别?br>1. API的一致?br>ODBC函数调用划分ؓ三?br>(1)核心API 它包括了与SAG的CLI相匹配的基本功能Q包括:分配与释攄境、连接及语句句柄Q连接到数据源;准备q执行SQL语句或立x行SQL语句QؓSQL语句和结果列中的参数分配存储器;从结果中索数据,索结果的信息Q提交和撤消事务处理Q检索错误信息?br>(2)一UAPI 它包括了核心API的全部功能,比如用特定驱动程序的对话框连接到数据源;讄和查询语句值和q接选项Q送部分或全部参数|索部分和全部l果Q检索目录信息;索关于驱动程序和数据源的信息?br>(3)二API 其功能包括核心和一UAPI的全部功能;览可获得的q接和可获得的数据源列表Q发送参数值数l,索结果数l;索参C数及参数描述Q应用可卷动的光标;索SQL语句和本|索各U目录信息;调用转换DLL?br>2. SQL语法的一致性?br>从SQL斚w可划分ؓ最的SQL语法、核心SQL语法和扩展SQL语法三个{?br>五、ODBC的应用与前景<br>ODBC的出现给用户描绘了一个诱人的前景Q即|络中的Windows用户可以方便地访问各U数据库。现在,在微软推出的许多产品中都提供了ODBC支持Q如Visal Basic 3.0、Visal C1.5、Excel 5.0、Word 6.0、FoxPro、Access{。同时其他一些应用Y件和开发工具也提供了对ODBC的支持。因此用户只要安装不同的ODBC驱动E序Q就可存取相应的数据库品,而不用户用何U前台应用YӞ也不后台是何种数据库,q个存取?br>本文来自: 公文大全(<a >www.gwdq.com</a>) 详细出处参考:<a >http://www.gwdq.com/lwzx/jsj/jsjll/146960_2.html</a><br>q程是一致的?br>但是׃ODBC产生的时间还不长Q其应用也同时存在着一些问题。首先,它的层次比较多,表现在性能上比专有的API要慢Q这是其标准化和开发性所带来的必要的代hQ其ơ,׃ODBC规定了三个层ơ的一致性别,应用E序与驱动程序之间的匚w׃出现一些问题和矛盾Q比如某些驱动程序支持的U别比较低,而应用程序要求的比较高;再者,׃不同的驱动程序ؓ不同的开发商所开发,试工作不能l一Q而现有的开发和试工具q不很完善;同时Q在非SQL的数据库pȝ上的应用也存在一些问题?br>微Y公司ODBC作ؓ一很重要的技术,它已承诺q一步改qODBC技术,为驱动程序开发者提供更先进的开发和试工具Q还交付系l管理和监控工具Q它q将与DBMS厂商和第三方厂商建立更密切的合作Q以期驱动E序支持更高U别的一致性,q在规范化方面有所完善。目前,ODBC已ؓ数据库供应商l织内部所认可Q同时ؓ众多应用软g厂商和第三方开发商所使用Q相信随着SQL的推q和规范Q用户和开发商会更加依赖于q一技?br>本文来自: 公文大全(<a >www.gwdq.com</a>) 详细出处参考:<a >http://www.gwdq.com/lwzx/jsj/jsjll/146960_3.html</a><br></p> <img src ="http://www.shnenglu.com/prayer/aggbug/96512.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/prayer/" target="_blank">Prayer</a> 2009-09-17 12:14 <a href="http://www.shnenglu.com/prayer/archive/2009/09/17/96512.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>~译db2E序http://www.shnenglu.com/prayer/archive/2009/08/11/92914.htmlPrayerPrayerTue, 11 Aug 2009 08:43:00 GMThttp://www.shnenglu.com/prayer/archive/2009/08/11/92914.htmlhttp://www.shnenglu.com/prayer/comments/92914.htmlhttp://www.shnenglu.com/prayer/archive/2009/08/11/92914.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/92914.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/92914.htmllen:len.o

       cc -o len len.o -q64 -L/home/sqllib/lib64 -ldb2

 

len.o:len.c

       cc -c -g -q64 -I/home/sqllib/include/ len.c

 

clean:

       rm -f *.o



Prayer 2009-08-11 16:43 发表评论
]]>
SQLAllocStmt ?分配语句句柄http://www.shnenglu.com/prayer/archive/2009/06/22/88289.htmlPrayerPrayerMon, 22 Jun 2009 07:19:00 GMThttp://www.shnenglu.com/prayer/archive/2009/06/22/88289.htmlhttp://www.shnenglu.com/prayer/comments/88289.htmlhttp://www.shnenglu.com/prayer/archive/2009/06/22/88289.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/88289.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/88289.html用?/strong>

SQLAllocStmt() 分配新的语句句柄q将其与q接句柄指定的连接相兌。对于在M一个时候可以分配的语句句柄数目没有已定义的限制?

在调用此函数之前Q必调?SQLConnect()?

必须?SQLBindParam()?tt>SQLPrepare()、SQLExecute()、SQLExecDirect() 或Q何其它将语句句柄作ؓ其中一个输入自变量的函C前调用此函数?

语法

SQLRETURN SQLAllocStmt (SQLHDBC    hdbc,
SQLHSTMT   *phstmt);

函数自变?/strong>

?12. SQLAllocStmt 自变?/a>
数据cd 自变? 使用 描述
SQLHDBC hdbc 输入 q接句柄
SQLHSTMT * phstmt 输出 指向语句句柄的指?

用法

DB2 UDB CLI 使用每个语句句柄来所有描q符、结果倹{游标信息和状态信息与已处理的 SQL 语句相关联。虽然每?SQL 语句都必要有语句句柄,但可以将句柄重新用于不同的语句?

Ҏ函数的调用要?hdbc 引用zd的数据库q接?

要执行定位型更新或删除,应用E序必须不同的语句句柄用于 SELECT 语句?UPDATE ?DELETE 语句?

如果指向语句句柄的输入指针(phstmtQ指向由先前?SQLAllocStmt() 调用分配的有效语句句柄,则此调用的结果是覆盖原始倹{这是应用程序编E错误,DB2 UDB CLI 不检此错误?

q回?/strong>

如果q回 SQL_ERRORQ则 phstmt 自变量设|ؓ SQL_NULL_HSTMT。应用程序应使用同一?hdbc 来调?SQLError() q将 hstmt 自变量设|ؓ SQL_NULL_HSTMT?

诊断

?13. SQLAllocStmt SQLSTATE
SQLSTATE 描述 说明
08003 q接未打开 hdbc 自变量指定的q接未打开。必L功地为驱动程序徏立连接(q且该连接必d打开Q才能分?hstmt?
40003 * 未知语句是否完成 在函数完成处理之前,CLI 与数据源之间的通信链\发生故障?
58004 pȝ错误 不可恢复的系l错误?
HY001 内存分配p| 驱动E序无法分配支持此函数的执行或完成所必需的内存?
HY009 自变量值无? phstmt 是空指针
HY013 * 内存理问题 驱动E序无法讉K支持此函数的执行或完成所必需的内存?

CZ

请参?SQLFetch()Q?a >CZQ?



Prayer 2009-06-22 15:19 发表评论
]]>
SQLAllocEnv ?分配环境句柄http://www.shnenglu.com/prayer/archive/2009/06/22/88288.htmlPrayerPrayerMon, 22 Jun 2009 07:16:00 GMThttp://www.shnenglu.com/prayer/archive/2009/06/22/88288.htmlhttp://www.shnenglu.com/prayer/comments/88288.htmlhttp://www.shnenglu.com/prayer/archive/2009/06/22/88288.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/88288.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/88288.htmlSQLAllocEnv ?分配环境句柄

用?/strong>

SQLAllocEnv() 分配环境句柄和相兌的资源?

应用E序必须?SQLAllocConnect() 或Q何其?DB2 UDB CLI 函数之前调用此函数。在以后所有需要环境句柄作入的函数调用中,都传?henv 倹{?

语法

SQLRETURN SQLAllocEnv (SQLHENV    *phenv);

函数自变?/strong>

?8. SQLAllocEnv 自变?/a>
数据cd 自变? 使用 描述
SQLHENV * phenv 输出 指向环境句柄的指?

用法

对于每个应用E序Q在M一个时候都只能有一个活动环境。以后Q何对 SQLAllocEnv() 的调用将q回现有的环境句柄?

~省情况下,?SQLFreeEnv() 所作的W一个成功调用将释放与该句柄相关联的资源。无论成功地调用了多次 SQLAllocEnv()Q都会发生这U情c如果环境属?SQL_ATTR_ENVHNDL_COUNTER 讄?SQL_TRUEQ则在释放与句柄相关联的资源之前Q必Mؓ每次成功?SQLAllocEnv() 调用来调?SQLFreeEnv()?

要确保所有的 DB2 UDB CLI 资源都保持活动状态,调用 SQLAllocEnv() 的程序不应终止或d堆栈。否则,应用E序丢失打开的游标、语句句柄和其它已分配的资源?

q回?/strong>

如果q回 SQL_ERRORQƈ?phenv {于 SQL_NULL_HENVQ则׃没有句柄可以与附加的诊断信息相关联,所以不能调?SQLError()?

如果q回码是 SQL_ERRORQƈ且指向环境句柄的指针不等?SQL_NULL_HENVQ则该句柄是受限句柄。这表示该句柄只能在 SQLError() 的调用中使用以获取更多的错误信息Q或者用?SQLFreeEnv() 的调用?

诊断

?9. SQLAllocEnv SQLSTATE
SQLSTATE 描述 说明
58004 pȝ错误 不可恢复的系l错误?

CZ

有关代码CZ的信息,参见代码不保证声明信?/font>?

/*******************************************************
** file = basiccon.c
**    - demonstrate basic connection to two datasources.
**    - error handling  ignored for simplicity
**
**  Functions used:
**
**    SQLAllocConnect  SQLDisconnect
**    SQLAllocEnv      SQLFreeConnect
**    SQLConnect       SQLFreeEnv
**
**
********************************************************/
#include <stdio.h>
#include <stdlib.h>
#include "sqlcli.h"
int
connect(SQLHENV henv,
SQLHDBC * hdbc);
#define MAX_DSN_LENGTH    18
#define MAX_UID_LENGTH    10
#define MAX_PWD_LENGTH    10
#define MAX_CONNECTIONS   5
int
main()
{
SQLHENV         henv;
SQLHDBC         hdbc[MAX_CONNECTIONS];
/* allocate an environment handle   */
SQLAllocEnv(&henv);
/* Connect to first data source */
connect(henv, &hdbc[0];);
/* Connect to second data source */
connect(henv, &hdbc[1];);
/*********   Start Processing Step  *************************/
/* allocate statement handle, execute statement, etc.       */
/*********   End Processing Step  ***************************/
printf("\nDisconnecting .....\n");
SQLFreeConnect(hdbc[0]);    /* free first connection handle  */
SQLFreeConnect(hdbc[1]);    /* free second connection handle */
SQLFreeEnv(henv);           /* free environment handle       */
return (SQL_SUCCESS);
}
/********************************************************************
**   connect - Prompt for connect options and connect              **
********************************************************************/
int
connect(SQLHENV henv,
SQLHDBC * hdbc)
{
SQLRETURN       rc;
SQLCHAR         server[MAX_DSN_LENGTH + 1], uid[MAX_UID_LENGTH + 1],
pwd[MAX_PWD_LENGTH
+ 1];
SQLCHAR         buffer[255];
SQLSMALLINT     outlen;
printf("Enter Server Name:\n");
gets((char *) server);
printf("Enter User Name:\n");
gets((char *) uid);
printf("Enter Password Name:\n");
gets((char *) pwd);
SQLAllocConnect(henv, hdbc);/* allocate a connection handle     */
rc = SQLConnect(*hdbc, server, SQL_NTS, uid, SQL_NTS, pwd, SQL_NTS);
if (rc != SQL_SUCCESS) {
printf("Error while connecting to database\n");
return (SQL_ERROR);
} else {
printf("Successful Connect\n");
return (SQL_SUCCESS);
}
}

参?/strong>



Prayer 2009-06-22 15:16 发表评论
]]>
SQLAllocHandle ?分配句柄http://www.shnenglu.com/prayer/archive/2009/06/22/88286.htmlPrayerPrayerMon, 22 Jun 2009 07:12:00 GMThttp://www.shnenglu.com/prayer/archive/2009/06/22/88286.htmlhttp://www.shnenglu.com/prayer/comments/88286.htmlhttp://www.shnenglu.com/prayer/archive/2009/06/22/88286.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/88286.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/88286.html用?/strong>

SQLAllocHandle() 分配Mcd的句柄?

语法

SQLRETURN SQLAllocHandle (SQLSMALLINT htype,
SQLINTEGER ihandle,
SQLINTEGER *handle);

函数自变?/strong>

?10. SQLAllocHandle 自变?/a>
数据cd 自变? 使用 描述
SQLSMALLINT htype 输入 要分配的句柄的类型。必L SQL_HANDLE_ENV、SQL_HANDLE_DBC、SQL_HANDLE_DESC ?SQL_HANDLE_STMT?
SQLINTEGER ihandle 输入 描述在其中分配新句柄的上下文的句柄;然而,如果 htype ?SQL_HANDLE_ENVQ则q是 SQL_NULL_HANDLE?
SQLINTEGER * handle 输出 指向句柄的指?

用法

此函数组合了函数 SQLAllocEnv()、SQLAllocConnect() ?SQLAllocStmt()?

如果 htype ?SQL_HANDLE_ENVQ则 ihandle 必须?SQL_NULL_HANDLE。如?htype ?SQL_HANDLE_DBCQ则 ihandle 必须是有效的环境句柄。如?htype ?SQL_HANDLE_DESC ?SQL_HANDLE_STMTQ则 ihandle 必须是有效的q接句柄?

q回?/strong>



Prayer 2009-06-22 15:12 发表评论
]]>
SQLSetConnectAttr ?讄q接属?/title><link>http://www.shnenglu.com/prayer/archive/2009/06/22/88284.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Mon, 22 Jun 2009 07:06:00 GMT</pubDate><guid>http://www.shnenglu.com/prayer/archive/2009/06/22/88284.html</guid><wfw:comment>http://www.shnenglu.com/prayer/comments/88284.html</wfw:comment><comments>http://www.shnenglu.com/prayer/archive/2009/06/22/88284.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/prayer/comments/commentRss/88284.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/prayer/services/trackbacks/88284.html</trackback:ping><description><![CDATA[<p><a >http://publib.boulder.ibm.com/iseries/v5r2/ic2989/index.htm?info/cli/rzadpmst99.htm</a><strong><br><br>用?/strong> <a name=IDX1101></a><a name=IDX1102></a> <p><tt>SQLSetConnectAttr()</tt> 讄特定q接的连接属性? <p><strong>语法</strong> <pre><span style="FONT-SIZE: 90%">SQLRETURN SQLSetConnectAttr (SQLHDBC hdbc, SQLINTEGER fAttr, SQLPOINTER vParam, SQLINTEGER sLen); </span></pre> <p><strong>函数自变?/strong> <br> <p><strong><a name=Table_146>?146. SQLSetConnectAttr 自变?/a></strong><br> <table border=1> <tbody> <tr> <th id=COL1 vAlign=top align=left width="20%"><span style="FONT-SIZE: 90%">数据cd </span></th> <th id=COL2 vAlign=top align=left width="20%"><span style="FONT-SIZE: 90%">自变?</span></th> <th id=COL3 vAlign=top align=left width="20%"><span style="FONT-SIZE: 90%">使用 </span></th> <th id=COL4 vAlign=top align=left width="40%"><span style="FONT-SIZE: 90%">描述 </span></th> </tr> <tr> <td vAlign=top align=left headers=COL1 width="20%"><span style="FONT-SIZE: 90%">SQLHDBC </span></td> <td vAlign=top align=left headers=COL2 width="20%"><span style="FONT-SIZE: 90%"><em>hdbc</em> </span></td> <td vAlign=top align=left headers=COL3 width="20%"><span style="FONT-SIZE: 90%">输入 </span></td> <td vAlign=top align=left headers=COL4 width="40%"><span style="FONT-SIZE: 90%">q接句柄 </span></td> </tr> <tr> <td vAlign=top align=left headers=COL1 width="20%"><span style="FONT-SIZE: 90%">SQLINTEGER </span></td> <td vAlign=top align=left headers=COL2 width="20%"><span style="FONT-SIZE: 90%"><em>fAttr</em> </span></td> <td vAlign=top align=left headers=COL3 width="20%"><span style="FONT-SIZE: 90%">输入 </span></td> <td vAlign=top align=left headers=COL4 width="40%"><span style="FONT-SIZE: 90%">要设|的q接属性,有关更多信息Q请参?a >?147</a>?</span></td> </tr> <tr> <td vAlign=top align=left headers=COL1 width="20%"><span style="FONT-SIZE: 90%">SQLPOINTER </span></td> <td vAlign=top align=left headers=COL2 width="20%"><span style="FONT-SIZE: 90%"><em>vParam</em> </span></td> <td vAlign=top align=left headers=COL3 width="20%"><span style="FONT-SIZE: 90%">输入 </span></td> <td vAlign=top align=left headers=COL4 width="40%"><span style="FONT-SIZE: 90%">?<em>fAttr</em> 相关联的倹{根据选项的不同,q可以是指向 32 位整数值的指针Q也可以是字W串?</span></td> </tr> <tr> <td vAlign=top align=left headers=COL1 width="20%"><span style="FONT-SIZE: 90%">SQLINTEGER </span></td> <td vAlign=top align=left headers=COL2 width="20%"><span style="FONT-SIZE: 90%"><em>sLen</em> </span></td> <td vAlign=top align=left headers=COL3 width="20%"><span style="FONT-SIZE: 90%">输入 </span></td> <td vAlign=top align=left headers=COL4 width="40%"><span style="FONT-SIZE: 90%">如果输入值是字符串的话,此自变量是它的长度Q否则不使用此自变量?</span></td> </tr> </tbody> </table> <p><strong>用法</strong> <p>通过 <tt>SQLSetConnectAttr()</tt> 讄的所有连接和语句选项都将持箋到调?<tt>SQLFreeConnect()</tt> 或下ơ调?<tt>SQLSetConnectAttr()</tt> 时ؓ止? <p>通过 <em>vParam</em> 讄的信息的格式取决于所指定?<em>fAttr</em>。选项信息可以?32 位整敎ͼ也可以是指向以空l止的字W串的指针?<br> <p><strong><a name=TBLTBCONO>?147. q接选项</a></strong><br> <table width="100%" border=1> <tbody> <tr> <th id=COL1 vAlign=top align=left width="50%"><span style="FONT-SIZE: 90%"><em>fAttr</em> </span></th> <th id=COL2 vAlign=top align=left width="50%"><span style="FONT-SIZE: 90%">内容 </span></th> </tr> <tr> <td vAlign=top align=left headers=COL1 width="50%"><span style="FONT-SIZE: 90%">SQL_ATTR_AUTOCOMMIT </span></td> <td vAlign=top align=left headers=COL2 width="50%"><span style="FONT-SIZE: 90%">32 位的|它设|连接的落实行ؓ。可能的值列C如下: <ul> <li>SQL_TRUE ?在执?SQL 语句时自动落实每?SQL 语句? <li>SQL_FALSE ?不自动落?SQL 语句。如果在h落实控制的环境下q行Q则必须使用 <tt>SQLEndTran()</tt> ?<tt>SQLTransact()</tt> 来显式地落实或回滚更攏V?</li> </ul> </span></td> </tr> <tr> <td vAlign=top align=left headers=COL1 width="50%"><span style="FONT-SIZE: 90%">SQL_ATTR_COMMIT<br>?br>SQL_TXN_ISOLATION<br></span></td> <td vAlign=top align=left headers=COL2 width="50%"><span style="FONT-SIZE: 90%">32 位的|它设|?<em>hdbc</em> 所引用的当前连接的事务隔离U别。DB2 UDB CLI 接受下列|但每个服务器都可能只支持q些隔离U别的其中某一些: <ul> <li>SQL_TXN_NO_COMMIT ?未用落实控制? <li>SQL_TXN_READ_UNCOMMITTED ?脏读取、不可重复读取和q象d是有可能的? <li>SQL_TXN_READ_COMMITTED ?脏读取是不可能的。不可重复读取和q象d是有可能的? <li>SQL_TXN_REPEATABLE_READ ?脏读取和不可重复d是不可能的。象读取是有可能的? <li>SQL_TXN_SERIALIZABLE ?事务是可序列化的。脏d、不可重复读取和q象都是不可能的?</li> </ul> <p>?IBM 术语中: <ul> <li>SQL_TXN_READ_UNCOMMITTED 是指“未落实的d”Q? <li>SQL_TXN_READ_COMMITTED 是指“游标E_?#8221;Q? <li>SQL_TXN_REPEATABLE_READ 是指“dE_?#8221;Q? <li>SQL_TXN_SERIALIZABLE 是指“可重复读?#8221;?</li> </ul> <p>有关“隔离U别”的详l说明,请参?IBM SQL Reference? <p>应该在调?<tt>SQLConnect()</tt> 之前讄 SQL_ATTR_COMMIT 属性。如果在建立q接之后更改了|q且该连接是与远E数据源的连接,则在下一ơ对q接句柄成功调用 <tt>SQLConnect()</tt> 之前Q此更改不会生效?</span></p> </td> </tr> <tr> <td vAlign=top align=left headers=COL1 width="50%"><span style="FONT-SIZE: 90%">SQL_ATTR_DATE_FMT </span></td> <td vAlign=top align=left headers=COL2 width="50%"><span style="FONT-SIZE: 90%">32 位的整数|q个值可以是Q? <ul> <li>SQL_FMT_ISO ?使用“国际标准化组l?#8221;QISOQ日期格?yyyy-mm-dd。这是缺省倹{? <li>SQL_FMT_USA ?使用国日期格式 mm/dd/yyyy? <li>SQL_FMT_EUR ?使用Ƨ洲日期格式 dd.mm.yyyy? <li>SQL_FMT_JIS ?使用“日本工业标准”日期格式 yyyy-mm-dd? <li>SQL_FMT_MDY ?使用日期格式 mm/dd/yyyy? <li>SQL_FMT_DMY ?使用日期格式 dd/mm/yyyy? <li>SQL_FMT_YMD ?使用日期格式 yy/mm/dd? <li>SQL_FMT_JUL ?使用儒略日期格式 yy/ddd? <li>SQL_FMT_JOB ?使用作业~省倹{?</li> </ul> </span></td> </tr> <tr> <td vAlign=top align=left headers=COL1 width="50%"><span style="FONT-SIZE: 90%">SQL_ATTR_DATE_SEP </span></td> <td vAlign=top align=left headers=COL2 width="50%"><span style="FONT-SIZE: 90%">32 位的整数|q个值可以是Q? <ul> <li>SQL_SEP_SLASH ?使用斜杠Q?Q作为日期分隔符。这是缺省倹{? <li>SQL_SEP_DASH ?使用破折P-Q作为日期分隔符? <li>SQL_SEP_PERIOD ?使用句点Q?Q作为日期分隔符? <li>SQL_SEP_COMMA ?使用逗号Q?Q作为日期分隔符? <li>SQL_SEP_BLANK ?使用I格作ؓ日期分隔W? <li>SQL_SEP_JOB ?使用作业~省倹{?</li> </ul> </span></td> </tr> <tr> <td vAlign=top align=left headers=COL1 width="50%"><span style="FONT-SIZE: 90%">SQL_ATTR_DBC_DEFAULT_LIB </span></td> <td vAlign=top align=left headers=COL2 width="50%"><span style="FONT-SIZE: 90%">一个字W|q个值指C将用于解析未限定文件引用的~省库。如果连接正在用系l命名方式,则此Ҏ效?</span></td> </tr> <tr> <td vAlign=top align=left headers=COL1 width="50%"><span style="FONT-SIZE: 90%">SQL_ATTR_DBC_SYS_NAMING </span></td> <td vAlign=top align=left headers=COL2 width="50%"><span style="FONT-SIZE: 90%">32 位的整数|q个值可以是Q? <ul> <li>SQL_TRUE ?DB2 UDB CLI 使用 iSeries pȝ命名方式。用斜杠(/Q定界符来限定文件。用作业的库列表来解析未限定的文g? <li>SQL_FALSE ?DB2 UDB CLI 使用~省命名方式Q即 SQL 命名。用句点(.Q定界符来限定文件。用缺省库或当前用h识来解析未限定的文g?</li> </ul> </span></td> </tr> <tr> <td vAlign=top align=left headers=COL1 width="50%"><span style="FONT-SIZE: 90%">SQL_ATTR_DECIMAL_SEP </span></td> <td vAlign=top align=left headers=COL2 width="50%"><span style="FONT-SIZE: 90%">32 位的整数|q个值可以是Q? <ul> <li>SQL_SEP_PERIOD ?使用句点Q?Q作为小数分隔符。这是缺省倹{? <li>SQL_SEP_COMMA ?使用逗号Q?Q作为日期分隔符? <li>SQL_SEP_JOB ?使用作业~省倹{?</li> </ul> </span></td> </tr> <tr> <td vAlign=top align=left headers=COL1 width="50%"><span style="FONT-SIZE: 90%">SQL_ATTR_EXTENDED_COL_INFO </span></td> <td vAlign=top align=left headers=COL2 width="50%"><span style="FONT-SIZE: 90%">32 位的整数|q个值可以是Q? <ul> <li>SQL_TRUE ?可以?<tt>SQLColAttributes()</tt> 上用对此连接句柄分配的语句句柄来检索扩展的列信息,?#8220;基本?#8221;?#8220;基本模式”?#8220;基本?#8221;?#8220;标号”? <li>SQL_FALSE ?不能?<tt>SQLColAttributes()</tt> 函数上用对此连接句柄分配的语句句柄来检索扩展的列信息。这是缺省倹{?</li> </ul> </span></td> </tr> <tr> <td vAlign=top align=left headers=COL1 width="50%"><span style="FONT-SIZE: 90%">SQL_ATTR_TIME_FMT </span></td> <td vAlign=top align=left headers=COL2 width="50%"><span style="FONT-SIZE: 90%">32 位的整数|q个值可以是Q? <ul> <li>SQL_FMT_ISO ?使用“国际标准化组l?#8221;QISOQ时间格?hh.mm.ss。这是缺省倹{? <li>SQL_FMT_USA ?使用国旉格式 hh:mmxxQ其?xx ?AM ?PM? <li>SQL_FMT_EUR ?使用Ƨ洲旉格式 hh.mm.ss? <li>SQL_FMT_JIS ?使用“日本工业标准”旉格式 hh:mm:ss? <li>SQL_FMT_HMS ?使用 hh:mm:ss 格式?</li> </ul> </span></td> </tr> <tr> <td vAlign=top align=left headers=COL1 width="50%"><span style="FONT-SIZE: 90%">SQL_ATTR_TIME_SEP </span></td> <td vAlign=top align=left headers=COL2 width="50%"><span style="FONT-SIZE: 90%">32 位的整数|q个值可以是Q? <ul> <li>SQL_SEP_COLON ?使用冒号Q?Q作为时间分隔符。这是缺省倹{? <li>SQL_SEP_PERIOD ?使用句点Q?Q作为时间分隔符? <li>SQL_SEP_COMMA ?使用逗号Q?Q作为时间分隔符? <li>SQL_SEP_BLANK ?使用I格作ؓ旉分隔W? <li>SQL_SEP_JOB ?使用作业~省倹{?</li> </ul> </span></td> </tr> <tr> <td vAlign=top align=left headers=COL1 width="50%"><span style="FONT-SIZE: 90%">SQL_SAVEPOINT_NAME </span></td> <td vAlign=top align=left headers=COL2 width="50%"><span style="FONT-SIZE: 90%">一个字W|它指C?<tt>SQLEndTran()</tt> 要对函数 SQL_SAVEPOINT_NAME_ROLLBACK ?SQL_SAVEPOINT_NAME_RELEASE 使用的保存点名称?</span></td> </tr> <tr> <td vAlign=top align=left headers=COL1 width="50%"><span style="FONT-SIZE: 90%">SQL_2ND_LEVEL_TEXT </span></td> <td vAlign=top align=left headers=COL2 width="50%"><span style="FONT-SIZE: 90%">32 位的整数|q个值可以是Q? <ul> <li>SQL_TRUE ?通过调用 <tt>SQLError()</tt> 获取的错误文本将包含关于错误的完整文本描q? <li>SQL_FALSE ?通过调用 <tt>SQLError()</tt> 获取的错误文本将只包含关于错误的W一个别的描述。这是缺省倹{?</li> </ul> </span></td> </tr> </tbody> </table> <p><strong>q回?/strong> <ul> <li>SQL_SUCCESS <li>SQL_SUCCESS_WITH_INFO <li>SQL_ERROR <li>SQL_INVALID_HANDLE </li> </ul> <p><strong>诊断</strong> <br> <p><strong><a name=Table_148>?148. SQLSetConnectAttr SQLSTATE</a></strong><br> <table border=1> <tbody> <tr> <th id=COL1 vAlign=top align=left width="25%"><span style="FONT-SIZE: 90%">SQLSTATE </span></th> <th id=COL2 vAlign=top align=left width="25%"><span style="FONT-SIZE: 90%">描述 </span></th> <th id=COL3 vAlign=top align=left width="50%"><span style="FONT-SIZE: 90%">说明 </span></th> </tr> <tr> <td vAlign=top align=left headers=COL1 width="25%"><span style="FONT-SIZE: 90%"><strong>HY</strong>001 </span></td> <td vAlign=top align=left headers=COL2 width="25%"><span style="FONT-SIZE: 90%">内存分配p| </span></td> <td vAlign=top align=left headers=COL3 width="50%"><span style="FONT-SIZE: 90%">驱动E序无法分配支持此函数的执行或完成所必需的内存?</span></td> </tr> <tr> <td vAlign=top align=left headers=COL1 width="25%"><span style="FONT-SIZE: 90%"><strong>HY</strong>009 </span></td> <td vAlign=top align=left headers=COL2 width="25%"><span style="FONT-SIZE: 90%">自变量值无?</span></td> <td vAlign=top align=left headers=COL3 width="50%"><span style="FONT-SIZE: 90%">l定 <em>fAttr</em> |对自变量 <em>vParam</em> 指定了无效的倹{? <p> <p>指定了无效的 <em>fAttr</em> 倹{?</span></p> </td> </tr> </tbody> </table> </p> <img src ="http://www.shnenglu.com/prayer/aggbug/88284.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/prayer/" target="_blank">Prayer</a> 2009-06-22 15:06 <a href="http://www.shnenglu.com/prayer/archive/2009/06/22/88284.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用ODBC API讉K数据?/title><link>http://www.shnenglu.com/prayer/archive/2008/10/23/64846.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Thu, 23 Oct 2008 09:45:00 GMT</pubDate><guid>http://www.shnenglu.com/prayer/archive/2008/10/23/64846.html</guid><wfw:comment>http://www.shnenglu.com/prayer/comments/64846.html</wfw:comment><comments>http://www.shnenglu.com/prayer/archive/2008/10/23/64846.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/prayer/comments/commentRss/64846.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/prayer/services/trackbacks/64846.html</trackback:ping><description><![CDATA[     摘要: 最q工作需要,研究了一下ODBC APIQƈ对它q行了简单的装Q下面介l一下: 假设有一个数据库表ؓQ?CREATE TABLE `testTable` (                    &nbs...  <a href='http://www.shnenglu.com/prayer/archive/2008/10/23/64846.html'>阅读全文</a><img src ="http://www.shnenglu.com/prayer/aggbug/64846.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/prayer/" target="_blank">Prayer</a> 2008-10-23 17:45 <a href="http://www.shnenglu.com/prayer/archive/2008/10/23/64846.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sqlcli.h DB2 CLI include filehttp://www.shnenglu.com/prayer/archive/2008/10/23/64775.htmlPrayerPrayerThu, 23 Oct 2008 01:47:00 GMThttp://www.shnenglu.com/prayer/archive/2008/10/23/64775.htmlhttp://www.shnenglu.com/prayer/comments/64775.htmlhttp://www.shnenglu.com/prayer/archive/2008/10/23/64775.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/64775.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/64775.html阅读全文

Prayer 2008-10-23 09:47 发表评论
]]>
~辑词条SQLBindColhttp://www.shnenglu.com/prayer/archive/2008/10/16/64184.htmlPrayerPrayerThu, 16 Oct 2008 10:59:00 GMThttp://www.shnenglu.com/prayer/archive/2008/10/16/64184.htmlhttp://www.shnenglu.com/prayer/comments/64184.htmlhttp://www.shnenglu.com/prayer/archive/2008/10/16/64184.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/64184.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/64184.html
  函数功能描述:数据缓冲绑定到l果集的?br>
  说明Q?br>
  版本引入QODBC 1.0
  遵从标准QISO 92
  功能说明Q?SQLBindCol应用程序的数据~冲l定到结果集的各?br>
  函数原型Q?SQLRETURN SQLBindCol(
  SQLHSTMT StatementHandle,
  SQLUSMALLINT ColumnNumber,
  SQLSMALLINT TargetType,
  SQLPOINTER TargetValuePtr,
  SQLINTEGER BufferLength,
  SQLLEN * StrLen_or_Ind);
  参数Q?br>
  StatementHandle
  [输入] 声明的句?br>
  ColumnNumber
  [输入] l果集里要绑定的列号。列号ؓ?开始递增的数字编PW?列ؓ书签列。如果没有用书{䏀―就是说QSQL_ATTR_USE_BOOKMARKSq个声明属性被|ؓSQL_UB_OFF――那么列号从1开始计敎ͼ
  TargetType
  [输入] *TargetValuePtr所指缓冲的C数据cd的标识符Q当通过SQLFetch, SQLFetchScroll, SQLBulkOperations?SQLSetPos从数据源取得数据的时候,驱动E序数据{换成q个cdQ当通过SQLBulkOperations或SQLSetPos发送数据到数据源时Q驱动程序从q个cd来{换数据?br>
  TargetValuePtr
  [输入/输出] 用来l定列的数据~冲的指针。SQLFetch 和SQLFetchScrollq回数据到这个缓册Ӏ当操作为SQL_FETCH_BY_BOOKMARK标识的时候SQLBulkOperationsq回数据到这个缓册Ӏ当操作为SQL_ADD ?SQL_UPDATE_BY_BOOKMARKӞ从这个缓冲取得数据。当操作为SQL_REFRESHӞSQLSetPosq回数据到这个缓冲中Q当操作为SQL_UPDATEӞ从这个缓冲取得数据。如果TargetValuePtrZI指针,驱动E序取消列到数据~冲的绑定。应用程序可通过SQL_UNBIND选项通过调用SQLFreeStmt来取消所有列的绑定。如果SQLBindCol调用的TargetValuePtr参数为空指针而StrLen_or_IndPtr是有效的值的话,应用E序可取消列的绑定但仍然存在一个该列的长度/指示~冲l定?br>
  BufferLength
  [输入] *TargetValuePtr指向的缓冲的字节数长度。驱动程序用BufferLength来避免返回可变长数据如字W或二进制数时写q?TargetValuePtr的边界。注意驱动程序会在返回字W数据到*TargetValuePtr时计空l止W。因?TargetValuePtr~冲p包括I终止符的空_否则驱动E序会截短数据。当驱动E序q回定长数据如整形数或一个数据结构时Q驱动程序会忽略BufferLength参数q判断缓冲是否够大来接收数据。因此很重要的是应用E序要分配一个够大的缓冲给定长数据Q否则驱动程序会写过~冲的界。当BufferLength 于0时SQLBindColq回SQLSTATE HY090Q无效的字符串或~冲长度Q,{于0时不q回q个l果Q可是,如果TargetType指定Z个字W类型,应用E序׃要将BufferLength设ؓ0Q因为ISO的CLI-适应?驱动E序在这U情况下q回SQLSTATE HY090?br>
  StrLen_or_IndPtr
  [输入/输出] 指向l定列的长度/指示~冲。SQLFetch ?SQLFetchScrollq回一个数值到q个~冲。当操作为SQL_ADDQSQL_UPDATE_BY_BOOKMARK, ?SQL_DELETE_BY_BOOKMARK时SQLBulkOperations从这个缓冲取得一个数倹{当操作为SQL_FETCH_BY_BOOKMARK时SQLBulkOperationsq回一个数值到q个~冲Q当操作为SQL_REFRESH时SQLSetPosq回一个数值到此缓Ԍ但操作ؓSQL_UPDATEӞ它从q个~冲取回一个数倹{SQLFetch, SQLFetchScroll, SQLBulkOperations, ?SQLSetPos可返回以下数值到长度/指示~冲Q?br>
  l q回数据的有效长?br>
  l SQL_NO_TOTAL
  l SQL_NULL_DATA
  应用E序可下列值放入长?指示~冲l供SQLBulkOperations 或SQLSetPos使用Q?br>
  l 待发送数据的长度
  l SQL_NTS
  l SQL_NULL_DATA
  l SQL_DATA_AT_EXEC
  l SQL_LEN_DATA_AT_EXEC宏的l果
  l SQL_COLUMN_IGNORE
  如果指示~冲和长度缓冲是分开的缓冲区的话Q指C缓冲只能返回SQL_NULL_DATAQ而长度缓冲可q回所有其他的倹{如果StrLen_or_IndPtrZ个空指针Q那么没有可用的长度或指C倹{这是当取数据且数据为NULL时的一个错误?br>
  q回|
  SQL_SUCCESS,SQL_SUCCESS_WITH_INFO,SQL_ERROR,或SQL_INVALID_HANDLE.
  备注Q此SDK函数的用涉及到很多相关的部分,请用者一定要认真仔细?br>
  CZ代码Q?br>
  #define NAME_LEN 50
  #define PHONE_LEN 10
  SQLCHAR szName[NAME_LEN], szPhone[PHONE_LEN];
  SQLINTEGER sCustID, cbName, cbCustID, cbPhone;
  SQLHSTMT hstmt;
  SQLRETURN retcode;
  retcode = SQLExecDirect(hstmt,
  "SELECT CUSTID, NAME, PHONE FROM CUSTOMERS ORDER BY 2, 1, 3",
  SQL_NTS);
  if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
  {
  /* Bind columns 1, 2, and 3 */
  SQLBindCol(hstmt, 1, SQL_C_ULONG, &sCustID, 0, &cbCustID);
  SQLBindCol(hstmt, 2, SQL_C_CHAR, szName, NAME_LEN, &cbName);
  SQLBindCol(hstmt, 3, SQL_C_CHAR, szPhone, PHONE_LEN, &cbPhone);
  /* Fetch and print each row of data. On */
  /* an error, display a message and exit. */
  while (TRUE)
  {
  retcode = SQLFetch(hstmt);
  if (retcode == SQL_ERROR || retcode == SQL_SUCCESS_WITH_INFO)
  {
  show_error();
  }
  if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
  {
  fprintf(out, "%-*s %-5d %*s", NAME_LEN-1, szName,
  sCustID, PHONE_LEN-1, szPhone);
  }
  else
  {
  break;
  }
  }
  }


Prayer 2008-10-16 18:59 发表评论
]]>
ݺɫۺϾþȥ| þþþþùƷ | þþƷƷapp| AVþþƷ| þþƷҹҹҹҹҹþ| 91þþһȫ| þøһëƬ| þþһ | ˾þô߽ۺվ| ҹavþþþ| þ99Ʒþþþþ| þþSS鶹ŷպ| 2020þþƷ| ˾ƷۺϾþþþ| ӰһѾþþþþþþ | 69Ʒþþþ99| ѾƷþ| ھƷþþþþ鶹| ݹƷþþþþ| ޷?Vþò| ŷۺҹҹþ| þþþ޾Ʒһ| ˾þô߽AVһ| ޹Ʒþþþվ| ŮHҳþþ| þþþþùƷŮ| þ޾Ʒۿ| Ӱһþҹײ | þݺҹҹ2020츾| Ʒþþþþ޾Ʒ| ƯޱгĻþ | ۺϳ˾þС˵| þ99ƷۺϹҳ| ҹþƷþþþ| þþþþþþƷɫ| ĻþþƷ | ƷŮٸavѾþ| ޹Ʒþþò| ƷþþþþþþþӰԺ | ˾þþƷһ| þþƷAVþþ|