﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-r2100-文章分类-转摘</title><link>http://www.cppblog.com/r2100/category/8224.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 09 Sep 2008 18:03:16 GMT</lastBuildDate><pubDate>Tue, 09 Sep 2008 18:03:16 GMT</pubDate><ttl>60</ttl><item><title>在C++中的ODBC API数据库编程</title><link>http://www.cppblog.com/r2100/articles/61391.html</link><dc:creator>r2100</dc:creator><author>r2100</author><pubDate>Tue, 09 Sep 2008 09:49:00 GMT</pubDate><guid>http://www.cppblog.com/r2100/articles/61391.html</guid><wfw:comment>http://www.cppblog.com/r2100/comments/61391.html</wfw:comment><comments>http://www.cppblog.com/r2100/articles/61391.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/r2100/comments/commentRss/61391.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/r2100/services/trackbacks/61391.html</trackback:ping><description><![CDATA[<div class=AreaCon>
<table>
    <tbody>
        <tr>
            <td>
            <p><strong>一、动态加载数据源</strong></p>
            <p><font size=+0>1、通过修改注册表加载数据源：</p>
            <p>&#183;用户数据源：<font size=+0>HKEY_CURRENT_USER＼<font size=+0>SOFTWARE＼<font size=+0>ODBC＼<font size=+0>ODBC.INI<br>&#183;系统数据源：<font size=+0>HKEY_LOCAL_MACHINE＼<font size=+0>SOFTWARE＼<font size=+0>ODBC＼<font size=+0>ODBC.INI</p>
            <p>对于不同类型的数据源，注册表的修改也不同，但基本上要修改两个地方，一个是在<font size=+0>ODBC.INI子键下建立一个与数据源描述名同名的子键，并在该子键下建立与数据源配置相关的项；另一个是在＼<font size=+0>ODBC.INI＼<font size=+0>ODBC Data Sources子键下建立一个新项以便告诉驱动程序管理器<font size=+0>ODBC数据源的类型。</p>
            <p><font size=+0>2、通过<font size=+0>ODBC API加载：<font size=+0>Windows系统子目录下的动态链接库<font size=+0>Odbcinst.dll提供了一个可以动态增加、修改和删除数据源的函数<font size=+0>SQLConfigDataSource，由于<font size=+0>VC的默认库文件中不包含此函数，因此使用前需将<font size=+0>Odbcinst.h文件包含在工程的头文件中，在工程的<font size=+0>setting属性框<font size=+0>Link页的<font size=+0>Object/library module编辑框中增加<font size=+0>Odbc32.lib，同时保证系统目录<font size=+0>system32下有文件<font size=+0>Odbccp32.dll。</p>
            <p><font size=+0>3、文件数据源的连接：除了<font size=+0>ODBC管理器，还可以通过<font size=+0>SQLDriverConnect来添加文件数据源。</p>
            <p><strong>二、<font size=+0>ODBC API编程</strong></p>
            <p>如果一个<font size=+0>ODBC API函数执行成功，则返回<font size=+0>SQL_SUCCESS或<font size=+0>SQL_SUCCESS_WITH_INFO，<font size=+0>SQL_SUCCESS指示可通过诊断记录获取有关操作的详细信息，<font size=+0>SQL_SUCCESS_WITH_INFO指示应用程序执行结果带有警告信息，可通过诊断记录获取详细信息。如果函数调用失败，返回码为<font size=+0>SQL_ERROR。</p>
            <p>一般，编写<font size=+0>ODBC程序主要有一下几个步骤：</p>
            <p><font size=+0>1、分配环境句柄：声明一个<font size=+0>SQLHENV的变量，调用函数<font size=+0>SQLAllocHandle。</p>
            <p>设置环境属性：完成环境分配后，用函数<font size=+0>SQLSetEnvAttr设置环境属性，注册<font size=+0>ODBC版本号。</p>
            <p>释放环境句柄：完成数据访问任务时，应调用<font size=+0>SQLFreeHandle释放前面分配的环境。</p>
            <p><font size=+0>2、分配连接句柄：声明一个<font size=+0>SQLHDBC类型的变量，调用<font size=+0>SQLAllocHandle函数分配句柄。</p>
            <p>设置连接属性：所有连接属性都可通过函数<font size=+0>SQLSetConnectAttr设置，调用函数<font size=+0>SQLGetConnectAttr可获取这些连接属性的当前设置值。</p>
            <p><font size=+0>3、 连接数据源：对于不同的程序和用户接口，可以用不同的函数建立连接</p>
            <p><font size=+0>SQLConnect：该函数只要提供数据源名称、用户<font size=+0>ID和口令，就可以进行连接了。</p>
            <p><font size=+0>SQLDriverConnect：该函数用一个连接字符串建立至数据源的连接，它可以让用户输入必要的连接信息，使用系统中还没定义的数据源。</p>
            <p><font size=+0>SQLBrowseConnect：该函数支持以一种迭代的方式获取到数据源的连接，直到最后建立连接，它基于客户机／服务器体系结构，因此本地数据库不支持该函数。</p>
            <p><font size=+0>4、 准备并执行<font size=+0>SQL语句</p>
            <p><font size=+0>A、 分配语句句柄：语句句柄是通过调用<font size=+0>SQLAllocHandle函数分配的。</p>
            <p>函数<font size=+0>SQLGetStmrrAttr和<font size=+0>SQLSetStmrrAttr用来获取和设置一个语句句柄的选项，使用完，调用<font size=+0>SQLFreeHandle释放该句柄。</p>
            <p><font size=+0>B、 执行<font size=+0>SQL语句</p>
            <p><font size=+0>SQLExecDirect：该函数直接执行<font size=+0>SQL语句，对于只执行一次的<font size=+0>SQL语句来说，该函数是执行最快的方法。<br><font size=+0>SQLPrepare和<font size=+0>SQLExecute：对于需要多次执行的<font size=+0>SQL语句来说，可先调用<font size=+0>SQLPrepare准备<font size=+0>SQL语句的执行，用<font size=+0>SQLExecute执行准备好的语句。</p>
            <p><font size=+0>C、 使用参数：使用参数可以使一条<font size=+0>SQL语句多次执行，得到不同的结果。</p>
            <p>函数<font size=+0>SQLBindParameter负责为参数定义变量，将一段<font size=+0>SQL语句中的一个参数标识符<font size=+0>("？"<font size=+0>)捆绑在一起，实现参数值的传递。</p>
            <p><font size=+0>5、<font size=+0> 获取记录集</p>
            <p><font size=+0>A、<font size=+0> 绑定列：首先必须分配与记录集中字段相对应的变量，然后通过函数<font size=+0>SQLBindCol将记录字段同程序变量绑定在一起，对于长记录字段，可以通过调用函数<font size=+0>SQLGetData直接取回数据。</p>
            <p>绑定字段可以根据自己的需要全部绑定，也可以绑定其中的某几个字段。</p>
            <p>通过调用函数<font size=+0>SQLBindCol将变量地址值赋为<font size=+0>NULL，可以结束对一个记录字段的绑定，通过调用函数<font size=+0>SQLFreeStmt，将其中选项设为<font size=+0>SQL_UNBIND，或者直接释放句柄，都会结束所有记录字段的绑定。</p>
            <p><font size=+0>B、<font size=+0>SQLFetch：该函数用于将记录集的下一行变成当前行，并把所有捆绑过的数据字段的数据拷贝到相应的缓冲区。</p>
            <p><font size=+0>C、<font size=+0> 光标：应用程序获取数据是通过光标<font size=+0>(Cursor)来实现的，在<font size=+0>ODBC中，主要有<font size=+0>3种类型的光标：单向光标、可滚动光标和块光标。</p>
            <p>有些应用程序不支持可滚动光标和块光标，<font size=+0>ODBC SDK提供了一个光标库<font size=+0>(ODBCCR32.DLL)，在应用程序中可通过设置连接属性<font size=+0>(SQL_STTR_ODBC_CURSOR)激活光标库。</p>
            <p><font size=+0>6、<font size=+0> 记录的添加、删除和更新：数据源数据更新可通过<font size=+0>3种方式：通过<font size=+0>SQLExecDirect函数使用相应的<font size=+0>SQL语句；调用<font size=+0>SQLSetPos函数实现记录集定义更新；调用<font size=+0>SQLBulkOperations函数实现数据更新。</p>
            <p>第一种方式适用于任何<font size=+0>ODBC数据源，后两种方式有的数据源不支持，可调用<font size=+0>SQLGetInfo确定数据源。</p>
            <p><font size=+0>SQLBulkOperations：该函数操作基于当前行集，调用前，须先调用<font size=+0>SQLFetch或<font size=+0>SQLFetchScroll获取。</p>
            <p>函数调用后，块光标的位置变为未定义状况，因此，应该先调用函数<font size=+0>SQLFetchScroll设定光标位置。</p>
            <p><font size=+0>7、错误处理：每个<font size=+0>ODBC API函数都能产生一系列反映操作信息的诊断记录，可以用<font size=+0>SQLGetDiagField函数获取诊断记录中特定的域，另外，可以使用<font size=+0>SQLGetDiagRec获取诊断记录中一些常用的域。</p>
            <p><font size=+0>8、事务处理：事务提交有两种方式：自动提交模式和手动提交模式。应用程序可通过调用函数<font size=+0>SQLSetConnectAttr设定连接属性<font size=+0>SQL_ATTR_AUTOCOMMIT，自动提交模式是默认的连接属性设置，对于所有的<font size=+0>ODBC驱动程序都能适应这种模式下，所有语句都是作为一个独立的事务进行处理的。</p>
            <p>手动提交模式把一组<font size=+0>SQL语句放入一个事务中，程序必须调用函数<font size=+0>SQLEenTran明确地终止一个事务。若使用多个激活的事务，就必须建立多个连接，每一个连接包含一个事务。</p>
            <p><font size=+0>9、断开数据连接并释放环境句柄：完成数据库操作后，可调用<font size=+0>SQLDisconnect函数关闭同数据库的连接。</p>
            </font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></td>
        </tr>
    </tbody>
</table>
</div>
<img src ="http://www.cppblog.com/r2100/aggbug/61391.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/r2100/" target="_blank">r2100</a> 2008-09-09 17:49 <a href="http://www.cppblog.com/r2100/articles/61391.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ODBC API连接数据库</title><link>http://www.cppblog.com/r2100/articles/60672.html</link><dc:creator>r2100</dc:creator><author>r2100</author><pubDate>Tue, 02 Sep 2008 03:24:00 GMT</pubDate><guid>http://www.cppblog.com/r2100/articles/60672.html</guid><wfw:comment>http://www.cppblog.com/r2100/comments/60672.html</wfw:comment><comments>http://www.cppblog.com/r2100/articles/60672.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/r2100/comments/commentRss/60672.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/r2100/services/trackbacks/60672.html</trackback:ping><description><![CDATA[摘抄的一段使用ODBC API 连接数据库的代码<br>ps:msdn文档 <a href="http://msdn.microsoft.com/en-us/library/ms714562(VS.85).aspx">http://msdn.microsoft.com/en-us/library/ms714562(VS.85).aspx</a><br><br>头文件<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_18_96_Open_Image onclick="this.style.display='none'; Codehighlighter1_18_96_Open_Text.style.display='none'; Codehighlighter1_18_96_Closed_Image.style.display='inline'; Codehighlighter1_18_96_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_18_96_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_18_96_Closed_Text.style.display='none'; Codehighlighter1_18_96_Open_Image.style.display='inline'; Codehighlighter1_18_96_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000">SQLHENV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_henv;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_18_96_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_18_96_Open_Text><span style="COLOR: #808080">///</span><span style="COLOR: #808080">&lt;&nbsp;&nbsp;&nbsp;&nbsp;ODBC环境句柄<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;SQLHDBC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_hdbc;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #808080">&lt;&nbsp;&nbsp;&nbsp;&nbsp;ODBC句柄<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;SQLHSTMT&nbsp;&nbsp;&nbsp;&nbsp;m_hstmt;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #808080">&lt;&nbsp;&nbsp;&nbsp;&nbsp;ODBC游标句柄<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></span><span style="COLOR: #808080"></span></span><br><img id=Codehighlighter1_119_232_Open_Image onclick="this.style.display='none'; Codehighlighter1_119_232_Open_Text.style.display='none'; Codehighlighter1_119_232_Closed_Image.style.display='inline'; Codehighlighter1_119_232_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_119_232_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_119_232_Closed_Text.style.display='none'; Codehighlighter1_119_232_Open_Image.style.display='inline'; Codehighlighter1_119_232_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_szDSN[</span><span style="COLOR: #000000">256</span><span style="COLOR: #000000">];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_119_232_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_119_232_Open_Text><span style="COLOR: #808080">///</span><span style="COLOR: #808080">&lt;&nbsp;&nbsp;&nbsp;&nbsp;数据源名<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_szUserName[256];&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #808080">&lt;&nbsp;&nbsp;&nbsp;&nbsp;用户名<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_szPassword[256];&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #808080">&lt;&nbsp;&nbsp;&nbsp;&nbsp;密码<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_bAutoCommit;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&lt;&nbsp;&nbsp;&nbsp;&nbsp;是否自动提交</span></div>
</span><br>连接函数<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">BOOL&nbsp;CODBCTestDemo001Dlg::AllocHandle(SQLHENV&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">henv,&nbsp;SQLHDBC&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">hdbc,&nbsp;SQLHSTMT&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">hstmt)<br><img id=Codehighlighter1_85_1367_Open_Image onclick="this.style.display='none'; Codehighlighter1_85_1367_Open_Text.style.display='none'; Codehighlighter1_85_1367_Closed_Image.style.display='inline'; Codehighlighter1_85_1367_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_85_1367_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_85_1367_Closed_Text.style.display='none'; Codehighlighter1_85_1367_Open_Image.style.display='inline'; Codehighlighter1_85_1367_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_85_1367_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_85_1367_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;SQLRETURN&nbsp;&nbsp;&nbsp;&nbsp;retcode;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;retcode&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">henv);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(retcode&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;SQL_SUCCESS&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;retcode&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;SQL_SUCCESS_WITH_INFO)<br><img id=Codehighlighter1_238_1328_Open_Image onclick="this.style.display='none'; Codehighlighter1_238_1328_Open_Text.style.display='none'; Codehighlighter1_238_1328_Closed_Image.style.display='inline'; Codehighlighter1_238_1328_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_238_1328_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_238_1328_Closed_Text.style.display='none'; Codehighlighter1_238_1328_Open_Image.style.display='inline'; Codehighlighter1_238_1328_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_238_1328_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_238_1328_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retcode&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)SQL_OV_ODBC3,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(retcode&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;SQL_SUCCESS&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;retcode&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;SQL_SUCCESS_WITH_INFO)<br><img id=Codehighlighter1_385_1228_Open_Image onclick="this.style.display='none'; Codehighlighter1_385_1228_Open_Text.style.display='none'; Codehighlighter1_385_1228_Closed_Image.style.display='inline'; Codehighlighter1_385_1228_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_385_1228_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_385_1228_Closed_Text.style.display='none'; Codehighlighter1_385_1228_Open_Image.style.display='inline'; Codehighlighter1_385_1228_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_385_1228_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_385_1228_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retcode&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;SQLAllocHandle(SQL_HANDLE_DBC,henv,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">hdbc);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(retcode&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;SQL_SUCCESS&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;retcode&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;SQL_SUCCESS_WITH_INFO)<br><img id=Codehighlighter1_512_1150_Open_Image onclick="this.style.display='none'; Codehighlighter1_512_1150_Open_Text.style.display='none'; Codehighlighter1_512_1150_Closed_Image.style.display='inline'; Codehighlighter1_512_1150_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_512_1150_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_512_1150_Closed_Text.style.display='none'; Codehighlighter1_512_1150_Open_Image.style.display='inline'; Codehighlighter1_512_1150_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_512_1150_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_512_1150_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SQLSetConnectAttr(hdbc,(</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">)SQL_LOGIN_TIMEOUT,(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(m_bAutoCommit)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SQLSetConnectAttr(hdbc,(</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">)SQL_ATTR_AUTOCOMMIT,(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)SQL_AUTOCOMMIT_ON,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SQLSetConnectAttr(hdbc,(</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">)SQL_ATTR_AUTOCOMMIT,(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)SQL_AUTOCOMMIT_OFF,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retcode&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;SQLConnect(hdbc,(SQLCHAR&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)(LPTSTR)m_szDSN,SQL_NTS,<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(SQLCHAR&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)(LPTSTR)m_szUserName,SQL_NTS,(SQLCHAR&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)(LPTSTR)m_szPassword,SQL_NTS);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(retcode&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;SQL_SUCCESS&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;retcode&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;SQL_SUCCESS_WITH_INFO)<br><img id=Codehighlighter1_1003_1027_Open_Image onclick="this.style.display='none'; Codehighlighter1_1003_1027_Open_Text.style.display='none'; Codehighlighter1_1003_1027_Closed_Image.style.display='inline'; Codehighlighter1_1003_1027_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1003_1027_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1003_1027_Closed_Text.style.display='none'; Codehighlighter1_1003_1027_Open_Image.style.display='inline'; Codehighlighter1_1003_1027_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1003_1027_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1003_1027_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;TRUE;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_1042_1087_Open_Image onclick="this.style.display='none'; Codehighlighter1_1042_1087_Open_Text.style.display='none'; Codehighlighter1_1042_1087_Closed_Image.style.display='inline'; Codehighlighter1_1042_1087_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1042_1087_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1042_1087_Closed_Text.style.display='none'; Codehighlighter1_1042_1087_Open_Image.style.display='inline'; Codehighlighter1_1042_1087_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1042_1087_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1042_1087_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">ShowError(SQL_HANDLE_DBC,hdbc);</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SQLFreeHandle(SQL_HANDLE_DBC,hdbc);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hdbc&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRACE(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">It's&nbsp;Useless!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">ShowError(SQL_HANDLE_ENV,henv);</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">ShowError(SQL_HANDLE_ENV,henv);</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SQLFreeHandle(SQL_HANDLE_ENV,henv);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;henv&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;FALSE;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;FALSE;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br><br>关闭连接<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;CODBCTestDemo001Dlg::DeAllocHandle(SQLHENV&nbsp;henv,&nbsp;SQLHDBC&nbsp;hdbc,&nbsp;SQLHSTMT&nbsp;hstmt)<br><img id=Codehighlighter1_84_223_Open_Image onclick="this.style.display='none'; Codehighlighter1_84_223_Open_Text.style.display='none'; Codehighlighter1_84_223_Closed_Image.style.display='inline'; Codehighlighter1_84_223_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_84_223_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_84_223_Closed_Text.style.display='none'; Codehighlighter1_84_223_Open_Image.style.display='inline'; Codehighlighter1_84_223_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_84_223_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_84_223_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(m_hdbc)<br><img id=Codehighlighter1_100_164_Open_Image onclick="this.style.display='none'; Codehighlighter1_100_164_Open_Text.style.display='none'; Codehighlighter1_100_164_Closed_Image.style.display='inline'; Codehighlighter1_100_164_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_100_164_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_100_164_Closed_Text.style.display='none'; Codehighlighter1_100_164_Open_Image.style.display='inline'; Codehighlighter1_100_164_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_100_164_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_100_164_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SQLDisconnect(hdbc);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SQLFreeHandle(SQL_HANDLE_DBC,hdbc);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(m_henv)<br><img id=Codehighlighter1_180_221_Open_Image onclick="this.style.display='none'; Codehighlighter1_180_221_Open_Text.style.display='none'; Codehighlighter1_180_221_Closed_Image.style.display='inline'; Codehighlighter1_180_221_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_180_221_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_180_221_Closed_Text.style.display='none'; Codehighlighter1_180_221_Open_Image.style.display='inline'; Codehighlighter1_180_221_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_180_221_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_180_221_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SQLFreeHandle(SQL_HANDLE_ENV,henv);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<img src ="http://www.cppblog.com/r2100/aggbug/60672.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/r2100/" target="_blank">r2100</a> 2008-09-02 11:24 <a href="http://www.cppblog.com/r2100/articles/60672.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>递归实现求真子集</title><link>http://www.cppblog.com/r2100/articles/60059.html</link><dc:creator>r2100</dc:creator><author>r2100</author><pubDate>Tue, 26 Aug 2008 10:10:00 GMT</pubDate><guid>http://www.cppblog.com/r2100/articles/60059.html</guid><description><![CDATA[<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"></span>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdafx.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;SETNO&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;List[]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">{</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">b</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">};&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;buf[</span><span style="COLOR: #000000">26</span><span style="COLOR: #000000">];&nbsp;&nbsp;&nbsp;<br><br>Combine(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;num)&nbsp;&nbsp;&nbsp;<br>{&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;i;&nbsp;&nbsp;&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">num)&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">SETNO;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(buf[i])&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%c</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,List[i]);&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;buf[SETNO</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">num]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;Combine(num</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;buf[SETNO</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">num]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;Combine(num</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;<br>}&nbsp;&nbsp;&nbsp;<br>main(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">)&nbsp;&nbsp;&nbsp;<br>{&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;Combine(SETNO);&nbsp;&nbsp;&nbsp;<br>}&nbsp;&nbsp;&nbsp;</span></div>
<br><span style="COLOR: #000000"></span></div>
<br>
<img src ="http://www.cppblog.com/r2100/aggbug/60059.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/r2100/" target="_blank">r2100</a> 2008-08-26 18:10 <a href="http://www.cppblog.com/r2100/articles/60059.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>