<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[清风居-清风博客 - Win32&C++]]></title>
<link>http://www.qingfengju.com/</link>
<description><![CDATA[专注于计算机技术]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog3 v2.8]]></copyright>
<webMaster><![CDATA[dgx_lsyd3@163.com(淡月清风)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>清风居-清风博客</title>
	<url>http://www.qingfengju.com/images/logos.gif</url>
	<link>http://www.qingfengju.com/</link>
	<description>清风居-清风博客</description>
</image>

			<item>
			<link>http://www.qingfengju.com/article.asp?id=235</link>
			<title><![CDATA[DoDataExchange(CDataExchange* pDX)不执行,没有执行]]></title>
			<author>dgx_lsyd3@163.com(淡月清风)</author>
			<category><![CDATA[Win32&amp;C++]]></category>
			<pubDate>Wed,11 Aug 2010 11:06:52 +0800</pubDate>
			<guid>http://www.qingfengju.com/default.asp?id=235</guid>
		<description><![CDATA[<p><span style="color: #0000ff"><font face="宋体"><font size="2">BOOL </font></font></span><font face="宋体"><font size="2"><span style="color: #0000ff">CXXXDlg</span><span style="color: #ff0000">::</span><span style="color: #800000">OnInitDialog</span><span style="color: #ff0000">()<br />
</span><span style="color: #ff0000">{</span><br />
<font color="#cc0000">&nbsp; <span style="color: #0000ff">CDialog</span><span style="color: #ff0000">::</span><span style="color: #800000">OnInitDialog<span style="color: #ff0000">();&nbsp;</span>&nbsp;</span></font><span style="color: #339966"> //别忘了这个。<br />
</span><span style="color: #ff0000">}</span><br />
<br />
除了OnInitDialog之外，MFC中的许多虚函数都需要注意。<br />
</font></font></p>]]></description>
		</item>
		
			<item>
			<link>http://www.qingfengju.com/article.asp?id=232</link>
			<title><![CDATA[标准输入,标准输出,标准错误输出与重定向,管道]]></title>
			<author>dgx_lsyd3@163.com(淡月清风)</author>
			<category><![CDATA[Win32&amp;C++]]></category>
			<pubDate>Thu,05 Aug 2010 20:02:07 +0800</pubDate>
			<guid>http://www.qingfengju.com/default.asp?id=232</guid>
		<description><![CDATA[<p><font face="Courier New"><b>1.标准输入，标准输出，标准错误</b><br />
<br />
<font color="#ff0000">标准输入</font>(STDIN句柄)：指键盘输入，数字代号为0</font></p>
<div align="left"><span style="font-size: 12px"><span><font face="Courier New"><span style="color: navy; background-color: #ebebeb">char szText</span><span style="color: red; background-color: #ebebeb">[1000];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></span></div>
<div align="left"><span style="font-size: 12px"><font face="Courier New"><span style="color: #880000"><span style="background-color: #ebebeb">a. fscanf</span></span><span style="background-color: #ebebeb"><span style="color: red">(</span><span style="color: #a000a0">stdin</span><span style="color: red">,</span><span style="color: teal">&quot;%s&quot;</span><span style="color: red">,&amp;</span><span style="color: navy">szText</span></span><span style="color: red; background-color: #ebebeb">);</span></font></span></div>
<div align="left"><span style="font-size: 12px"><font face="Courier New"><span style="color: #880000"><span style="background-color: #ebebeb">b. scanf</span></span><span style="background-color: #ebebeb"><span style="color: red">(</span><span style="color: teal">&quot;%s&quot;</span><span style="color: red">,&amp;</span><span style="color: navy">szText</span></span><span style="color: red; background-color: #ebebeb">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></div>
<div><span style="font-size: 12px"><font face="Courier New"><span style="color: navy"><span style="background-color: #ebebeb">c. cin</span></span><span style="background-color: #ebebeb"><span style="color: red">&gt;&gt;</span><span style="color: navy">szText</span></span><span style="color: red; background-color: #ebebeb">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></div>
<p><font face="Courier New"><font color="#ff0000"><br />
标准输出</font>(STDOUT句柄)：输出到命令提示符窗口，数字代号为1</font></p>
<div align="left"><span style="font-size: 12px"><font face="Courier New"><span style="color: #880000"><span style="background-color: #ebebeb">a. fprintf</span></span><span style="background-color: #ebebeb"><span style="color: red">(</span><span style="color: #a000a0">stdout</span><span style="color: red">,</span><span style="color: teal">&quot;some_text_print_to_stdout.\n&quot;</span></span><span style="color: red; background-color: #ebebeb">);</span></font></span></div>
<div align="left"><span style="font-size: 12px"><font face="Courier New"><span style="color: #880000"><span style="background-color: #ebebeb">b. printf</span></span><span style="background-color: #ebebeb"><span style="color: red">(</span><span style="color: teal">&quot;some_text_print_to_stdout.\n&quot;</span></span><span style="color: red; background-color: #ebebeb">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></span></div>
<div><span style="font-size: 12px"><font face="Courier New"><span style="color: navy"><span style="background-color: #ebebeb">c. cout</span></span><span style="background-color: #ebebeb"><span style="color: red">&lt;&lt;</span><span style="color: teal">&quot;some_text_print_to_stdout.\n&quot;</span></span><span style="color: red; background-color: #ebebeb">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></div>
<p><font face="Courier New"><font color="#ff0000"><br />
标准错误</font>(STDERR句柄)：错误输出到命令提示符窗口，数字代号为2</font></p>
<div align="left"><span style="font-size: 12px"><font face="Courier New"><span style="color: #880000"><span style="background-color: #ebebeb">a. fprintf</span></span><span style="background-color: #ebebeb"><span style="color: red">(</span><span style="color: #a000a0">stderr</span><span style="color: red">,</span><span style="color: teal">&quot;some_err_text_print_to_stderr.\n&quot;</span></span><span style="color: red; background-color: #ebebeb">);</span></font></span></div>
<div><span style="font-size: 12px"><font face="Courier New"><span style="color: navy"><span style="background-color: #ebebeb">b. cerr</span></span><span style="background-color: #ebebeb"><span style="color: red">&lt;&lt;</span><span style="color: teal">&quot;some_err_text_print_to_stderr.\n&quot;</span></span><span style="color: red; background-color: #ebebeb">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></div>
<p><font face="Courier New"><br />
表面上看起来<font color="#ff0000">标准输出</font>与<font color="#ff0000">标准错误</font>似乎并没有什么区别，实际他们确是不同的(<a href="http://www.qingfengju.com/#2_5">参看2.5</a>)。<br />
<br />
<b>2.重定向操作符</b><br />
<br />
<b>2.1 <span style="background-color: #ffff00"><font color="#ff0000">&nbsp;&gt; </font></span>&nbsp;将命令的<font color="#ff0000">标准输出</font>写入到文件中</b><br />
执行：<span style="background-color: #ebebeb">echo Hello world.&gt;x.txt</span><br />
意义：将echo输出的字符Hello world.写入到x.txt中，如果x.txt中已有内容，将会被清除<br />
<br />
<b>2.2 <span style="background-color: #ffff00"><font color="#ff0000">&nbsp;&lt; </font></span>&nbsp;将指定文件的内容作为命令的<font color="#ff0000">标准输入</font></b><br />
新建一文件x.txt,在其中保存如下内容：<br />
<span style="background-color: #ccffff">line 1.<br />
this is a new line.<br />
line 3.</span><br />
执行：<span style="background-color: #ebebeb">find /N &quot;a&quot; &lt;x.txt</span><br />
意义：将x.txt中的内容作为find程序的<font color="#ff0000">标准输入</font>(键盘输入)，find程序在其中查找字符&quot;a&quot;，并输出&quot;a&quot;所在行的行号及其内容<br />
<br />
<b>2.3 <span style="background-color: #ffff00"><font color="#ff0000">&nbsp;&gt;&gt; </font></span>&nbsp;将命令的<font color="#ff0000">标准输出</font>添加到文件末尾而不删除文件中的信息。 </b><br />
执行：<span style="background-color: #ebebeb">echo Hello world.&gt;&gt;x.txt</span><br />
意义：将echo输出的字符Hello world.写入到x.txt中，如果x.txt中已有内容，则字符Hello world.被写入到x.txt的末尾<br />
<br />
<b>2.4 <span style="background-color: #ffff00"><font color="#ff0000">&nbsp;| </font></span>&nbsp;从第一个命令中读取<font color="#ff0000">标准输出</font>并将其写入第二个命令的<font color="#ff0000">标准输入</font>中。也就是管道。 </b><br />
执行：<span style="background-color: #ebebeb">dir | find &quot;软件.lnk&quot;</span><br />
意义：在本例中，将同时启动两个命令，但随后 find 命令会暂停，直到它接收到 dir 命令的输出为止。<br />
find 命令使用 dir 命令的输出作为输入，然后将输出发送到句柄 1(即 STDOUT)。<br />
<br />
执行：<span style="background-color: #ebebeb">ps | grep &quot;bas*&quot;</span><br />
意义：将ps的输出传递给grep的输入，即grep将在ps的输出中查找正则表达式&quot;bas*&quot;，并将找到的结果输出。<br />
<br />
<b>2.5 <span style="background-color: #ffff00"><font color="#ff0000">&nbsp;&gt;&amp; </font></span>&nbsp;<a name="2_5"></a>可将<font color="#ff0000">标准错误</font>写入<font color="#ff0000">标准输出</font>(2&gt;&amp;1)，或者将<font color="#ff0000">标准输出</font>写入<font color="#ff0000">标准错误</font>(1&gt;&amp;2)</b><br />
执行：<span style="background-color: #ebebeb">dir &quot;不存在的文件名&quot;&gt;x.txt</span><br />
看起来该命令会将dir的输出写入到x.txt中，实际上却没有全部写入，最后的&ldquo;找不到文件&rdquo;几个字被漏下了。<br />
原因是&ldquo;找不到文件&rdquo;不是<font color="#ff0000">标准输出</font>，而是<font color="#ff0000">标准错误</font>。<br />
<br />
执行：<span style="background-color: #ebebeb">dir &quot;不存在的文件名&quot;&gt;x.txt </span><span style="color: #ffffff"><span style="background-color: #ff3399">2&gt;&amp;1</span><br />
</span>意义：该命令会将dir的输出都写入到x.txt中(<font color="#ff0000">标准错误</font>被写入到了<font color="#ff0000">标准输出</font>中)<br />
<br />
执行：<span style="background-color: #ebebeb">ls -#$ </span><span style="color: #ffffff"><span style="background-color: #ff3399">2&gt;&amp;1</span></span><span style="background-color: #ebebeb"> | grep &quot;usage&quot;<br />
</span>意义：grep程序从命令ls -#$输出的<font color="#ff0000">标准错误</font>中查找包含usage的行<br />
<br />
备注：<br />
在Windows或者Unix/Linux下，这些概念，符号是一致的。<br />
</font><hr />
<br />
转：管道技术获取控制台输出 <br />
原文地址：<a target="_blank" href="http://hi.baidu.com/leolynch/blog/item/5917970b363c871795ca6bfa.html">http://hi.baidu.com/leolynch/blog/item/5917970b363c871795ca6bfa.html</a></p>
<div class="cnt">
<p>不知你是否用过这样的程序，他们本身并没有解压缩的功能，而是调用DOS程序PKZIP完成ZIP包的解压缩。但是在程序运行时又没有DOS控制台的窗口出现而且一切本应该在DOS下显示的信息都出现在了那个安装程序的一个文本框里。这种设计既美观又可以防止少数眼疾手快的用户提前关了你的DOS窗口。<br />
现在就来讨论一下，如何用匿名管道技术实现这个功能。</p>
<p>管道技术由来已久，相信不少人对DOS命令里的管道技术最为熟悉。当我们type一个文件的时候如果想让他分页现实可以输入</p>
<pre class="prog">
C:\&gt;type autoexec.bat|more</pre>
<p>这里&ldquo;|&rdquo;就是管道操作符。他以type输出的信息为读取端，以more的输入端为写入端建立的管道。</p>
<p>Windows中使用较多的管道也是匿名管道，它通过API函数CreatePipe创建。</p>
<pre class="prog">
BOOL CreatePipe(
           PHANDLE hReadPipe, // 指向读端句柄的指针
           PHANDLE hWritePipe, // 指向写端句柄的指针
           LPSECURITY_ATTRIBUTES lpPipeAttributes, // 指向安全属性结构的指针
           DWORD nSize // 管道的容量
);</pre>
<p>上面几个参数中要注意hReadPipe,hWritePipe是指向句柄的指针，而不是句柄（我第一次用的时候就搞错了）。nSize一般指定为0,以便让系统自己决定管道的容量。现在来看安全属性结构，SECURITY_ATTRIBUTES。</p>
<pre class="prog">
typedef struct _SECURITY_ATTRIBUTES { // sa 
           DWORD nLength; 
           LPVOID lpSecurityDescriptor; 
           BOOL bInheritHandle; 
} SECURITY_ATTRIBUTES;</pre>
<p>nLength是结构体的大小，自然是用sizeof取得了。lpSecurityDescriptor是安全描述符（一个C-Style的字符串）。bInheritHandle他指出了安全描述的对象能否被新创建的进程继承。先不要管他们的具体意义，使用的时候自然就知道了。</p>
<p>好，现在我们来创建一个管道</p>
<pre class="prog">
HANDLE hReadPipe, hWritePipe;
SECURITY_ATTRIBUTES sa;
          
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL; //使用系统默认的安全描述符
sa.bInheritHandle = TRUE; //一定要为TRUE，不然句柄不能被继承。
CreeatePipe(&amp;hReadPipe,&amp;hWritePipe,&amp;sa,0);</pre>
<p>OK,我们的管道建好了。当然这不是最终目的，我们的目的是把DOS上的一个程序输出的东西重定向到一个Windows程序的Edit控件。所以我们还需要先启动一个DOS的程序，而且还不能出现DOS控制台的窗口（不然不就露馅了吗）。我们用CreateProcess创建一个DOS程序的进程。</p>
<pre class="prog">
BOOL CreateProcess(
           LPCTSTR lpApplicationName, // C-style字符串:应用程序的名称 
           LPTSTR lpCommandLine, // C-style字符串:执行的命令
           LPSECURITY_ATTRIBUTES lpProcessAttributes, // 进程安全属性
           LPSECURITY_ATTRIBUTES lpThreadAttributes, // 线程安全属性
           BOOL bInheritHandles, // 是否继承句柄的标志
           DWORD dwCreationFlags, // 创建标志
           LPVOID lpEnvironment, // C-Style字符串：环境设置
           LPCTSTR lpCurrentDirectory, // C-Style字符串：执行目录
           LPSTARTUPINFO lpStartupInfo, // 启动信息
           LPPROCESS_INFORMATION lpProcessInformation // 进程信息
);</pre>
<p>先别走，参数是多了点，不过大部分要不不用自己填要不填个NULL就行了。lpApplication随便一点就行了。lpCommandLine可是你要执行的命令一定要认真写好。来，我们瞧瞧lpProcessAttributes和lpThreadAttributes怎么设置。哎？这不就是刚才那个吗。对阿，不过可比刚才简单。由于我们只是创建一个进程，他是否能在被继承不敢兴趣所以这两个值全为NULL。bInHeritHandles也是一定要设置为TRUE的，因为我们既然要让新的进程能输出信息到调用他的进程里，就必须让新的进程继承调用进程的句柄。我们对创建的新进程也没什么别的苛求，所以dwCreationFlags就为NULL了。lpEnvironment和lpCurrentDirectory根据你自己的要求是指一下就行了，一般也是NULL。接下来的lpStartupInfo可是关键，我们要认真看一下。</p>
<pre class="prog">
typedef struct _STARTUPINFO { // si 
           DWORD cb; 
           LPTSTR lpReserved; 
           LPTSTR lpDesktop; 
           LPTSTR lpTitle; 
           DWORD dwX; 
           DWORD dwY; 
           DWORD dwXSize; 
           DWORD dwYSize; 
           DWORD dwXCountChars; 
           DWORD dwYCountChars; 
           DWORD dwFillAttribute; 
           DWORD dwFlags; 
           WORD wShowWindow; 
           WORD cbReserved2; 
           LPBYTE lpReserved2; 
           HANDLE hStdInput; 
           HANDLE hStdOutput; 
           HANDLE hStdError; 
} STARTUPINFO, *LPSTARTUPINFO;</pre>
<p>倒！这么多参数，一个一个写肯定累死了。没错，MS早就想到会累死人。所以提供救人一命的API函数GetStartupInfo。</p>
<pre class="prog">
VOID GetStartupInfo(
           LPSTARTUPINFO lpStartupInfo
);</pre>
<p>这个函数用来取得当前进程的StartupInfo,我们新建的进程基本根当前进程的StartupInfo差不多，就借用一下啦。然后再小小修改一下即可。</p>
<p>我们要改的地方有这么几个：cb,dwFlags，hStdOutput，hStdError，wShowWindow。先说cb，他指的是STARTUPINFO的大小，还是老手法sizeof。再说wShowWindow,他制定了新进程创建时窗口的现实状态，这个属性当然给为SW_HIDE了，我们不是要隐藏新建的DOS进程吗。哈哈，看到hStdOutput和hStdError，标准输出和错误输出的句柄。关键的地方来了，只要我们把这两个句柄设置为hWrite,我们的进程一旦有标准输出，就会被写入我们刚刚建立的匿名管道里，我们再用管道的hReadPipe句柄把内容读出来写入Edit控件不就达到我们的目的了吗。呵呵，说起来也真是听容易的阿。这几个关键参数完成了以后，千万别忘了dwFlags。他是用来制定STARTUPINFO里这一堆参数那个有效的。既然我们用了hStdOutput,hStdError和wShowWindow那dwFlags就给为STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES。</p>
<p>好了，现在回到CreateProcess的最后一个参数lpProcessInformation（累！）。呵呵，这个参数不用自己填了，他是CreateProcess返回的信息，只要给他一个PROCESS_INFORMATION结构事例的地址就行了。</p>
<p>大功高成了，我们管道一端连在了新进程的标准输出端了，一端可以自己用API函数ReadFile读取了。等等，不对，我们的管道还有问题。我们把hWrite给了hStdOutput和hStdError,那么在新的进程启动时就会在新进程中打开一个管道写入端，而我们在当前进程中使用了CreatePipe创建了一个管道，那么在当前进程中也有这个管道的写入端hWrite。好了，这里出现了一个有两个写入端和一个读出端的畸形管道。这样的管道肯定是有问题的。由于当前进程并不使用写端，因此我们必须关闭当前进程的写端。这样，我们的管道才算真正的建立成功了。来看看VC++写的源程序：</p>
<pre class="prog">
/* 
 * 通过管道技术，将dir /?的帮助信息输入到MFC应用程序的一个CEdit控件中。
 * VC++6.0 + WinXP 通过 
 * 
 * detrox, 2003 
 */

void CPipeDlg::OnButton1() 
{ 
  SECURITY_ATTRIBUTES sa;
  HANDLE hRead,hWrite;
        
  sa.nLength = sizeof(SECURITY_ATTRIBUTES);
  sa.lpSecurityDescriptor = NULL;
  sa.bInheritHandle = TRUE;
  if (!CreatePipe(&amp;hRead,&amp;hWrite,&amp;sa,0)) {
   MessageBox(&quot;Error On CreatePipe()&quot;);
     return;
  } 
  STARTUPINFO si;
  PROCESS_INFORMATION pi; 
  si.cb = sizeof(STARTUPINFO);
  GetStartupInfo(&amp;si); 
  si.hStdError = hWrite;
  si.hStdOutput = hWrite;
  si.wShowWindow = SW_HIDE;
  si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
  if (!CreateProcess(NULL,&quot;c:\\windows\\system32\\cmd.exe/c dir /?&quot;
        ,NULL,NULL,TRUE,NULL,NULL,NULL,&amp;si,&amp;pi)) {
        MessageBox(&quot;Error on CreateProcess()&quot;);
        return;
  }
  CloseHandle(hWrite);
        
  char buffer[4096] = {0};
  DWORD bytesRead; 
  while (true) {
      if (ReadFile(hRead,buffer,4095,&amp;bytesRead,NULL) == NULL)
          break;
      m_Edit1 += buffer;
      UpdateData(false);
      Sleep(200); 
  } 
}</pre>
</div>
<p>参考：<br />
<a href="http://www.codeproject.com/kb/dialog/quickwin.aspx">http://www.codeproject.com/kb/dialog/quickwin.aspx</a><br />
<a href="http://blog.vckbase.com/bruceteen/articles/27139.html">http://blog.vckbase.com/bruceteen/articles/27139.html</a><br />
<a href="http://hi.baidu.com/leolynch/blog/item/5917970b363c871795ca6bfa.html">http://hi.baidu.com/leolynch/blog/item/5917970b363c871795ca6bfa.html</a></p>]]></description>
		</item>
		
			<item>
			<link>http://www.qingfengju.com/article.asp?id=233</link>
			<title><![CDATA[MySQL C API的简单应用]]></title>
			<author>dgx_lsyd3@163.com(淡月清风)</author>
			<category><![CDATA[Win32&amp;C++]]></category>
			<pubDate>Sun,01 Aug 2010 20:23:16 +0800</pubDate>
			<guid>http://www.qingfengju.com/default.asp?id=233</guid>
		<description><![CDATA[<div align="left"><span style="color: blue">#include </span><span style="color: teal">&lt;stdio.h&gt;<br />
</span></div>
<div align="left"><span style="color: blue">#include </span><span style="color: teal">&lt;WinSock2.h&gt; </span><span style="color: green">//</span><span style="color: green">仅</span><span style="color: green">windows下</span></div>
<div align="left"><span style="color: blue">#include </span><span style="color: teal">&lt;mysql.h&gt;</span></div>
<div align="left"><span style="color: blue">#pragma comment</span><span style="color: red">(</span><span style="color: blue">lib</span><span style="color: red">,</span><span style="color: teal">&quot;libmysql.lib&quot;</span><span style="color: red">) </span><span style="color: green">//unix</span><span style="color: green">下可静态链接</span><span style="color: green">libmysqlclient.a</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="color: #0000ff">int </span><span style="color: #880000">main</span><span style="color: red">(</span><span style="color: blue">int </span><span style="color: gray">argc</span><span style="color: red">, </span><span style="color: blue">char</span><span style="color: red">* </span><span style="color: gray">argv</span><span style="color: red">[], </span><span style="color: blue">char</span><span style="color: red">* </span><span style="color: gray">envp</span><span style="color: red">[])</span></div>
<div align="left"><span style="color: red">{</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: green">//</span><span style="color: green">调用</span><span style="color: green">mysql_library_init()</span><span style="color: green">和</span><span style="color: green">mysql_library_end()</span><span style="color: green">的目的在于，为</span><span style="color: green">MySQL</span><span style="color: green">库提供恰当的初始化和结束处理。</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: #a000a0">mysql_library_init</span><span style="color: red">(</span><span style="color: #a000a0">NULL</span><span style="color: red">,</span><span style="color: #a000a0">NULL</span><span style="color: red">,</span><span style="color: #a000a0">NULL</span><span style="color: red">);</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: green">//</span><span style="color: green">分配或初始化与</span><span style="color: green">mysql_real_connect()</span><span style="color: green">相适应的</span><span style="color: green">MYSQL</span><span style="color: green">对象。</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: blue">MYSQL </span><span style="color: gray">mysql</span><span style="color: red">;</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: #880000">mysql_init</span><span style="color: red">(&amp;</span><span style="color: gray">mysql</span><span style="color: red">);</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: green">//</span><span style="color: green">尝试与运行在主机上的</span><span style="color: green">MySQL</span><span style="color: green">数据库引擎建立连接。</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: green">//</span><span style="color: green">在你能够执行需要有效</span><span style="color: green">MySQL</span><span style="color: green">连接句柄结构的任何其他</span><span style="color: green">API</span><span style="color: green">函数之前，</span><span style="color: green">mysql_real_connect()</span><span style="color: green">必须成功完成。</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: blue">if</span><span style="color: red"> (!</span><span style="color: #880000">mysql_real_connect</span><span style="color: red">(&amp;</span><span style="color: gray">mysql</span><span style="color: red">, </span><span style="color: teal">&quot;localhost&quot;</span><span style="color: red">, </span><span style="color: teal">&quot;root&quot;</span><span style="color: red">, </span><span style="color: teal">&quot;chuangke&quot;</span><span style="color: red">,</span><span style="color: teal">&quot;test_mysql_db&quot;</span><span style="color: red">,3306,</span><span style="color: #a000a0">NULL</span><span style="color: red">,</span><span style="color: #a000a0">NULL</span><span style="color: red">))</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; {</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #880000">fprintf</span><span style="color: red">(</span><span style="color: #a000a0">stderr</span><span style="color: red">,</span><span style="color: teal">&quot;%s&quot;</span><span style="color: red">,</span><span style="color: #880000">mysql_error</span><span style="color: red">(&amp;</span><span style="color: gray">mysql</span><span style="color: red">));</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #880000">exit</span><span style="color: red">(1);</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; }</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: green">//</span><span style="color: green">该函数用于为当前连接设置默认的字符集。</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp; &nbsp;</span><span style="color: blue">if</span><span style="color: red"> (</span><span style="color: #880000">mysql_set_character_set</span><span style="color: red">(&amp;</span><span style="color: gray">mysql</span><span style="color: red">,</span><span style="color: teal">&quot;gbk&quot;</span><span style="color: red">))</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; {</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #880000">fprintf</span><span style="color: red">(</span><span style="color: #a000a0">stderr</span><span style="color: red">,</span><span style="color: teal">&quot;%s&quot;</span><span style="color: red">,</span><span style="color: #880000">mysql_error</span><span style="color: red">(&amp;</span><span style="color: gray">mysql</span><span style="color: red">));&nbsp;&nbsp;&nbsp;&nbsp; </span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #880000">exit</span><span style="color: red">(1);</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; }</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: green">//</span><span style="color: green">如果模式为</span><span style="color: green">&ldquo;1&rdquo;</span><span style="color: green">，启用</span><span style="color: green">autocommit</span><span style="color: green">模式；如果模式为</span><span style="color: green">&ldquo;0&rdquo;</span><span style="color: green">，禁止</span><span style="color: green">autocommit</span><span style="color: green">模式。</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: #880000">mysql_autocommit</span><span style="color: red">(&amp;</span><span style="color: gray">mysql</span><span style="color: red">,0);</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: green">//</span><span style="color: green">执行由</span><span style="color: green">&ldquo;Null</span><span style="color: green">终结的字符串</span><span style="color: green">&rdquo;</span><span style="color: green">查询指向的</span><span style="color: green">SQL</span><span style="color: green">查询。</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: green">//mysql_query()</span><span style="color: green">不能用于包含二进制数据的查询，应使用</span><span style="color: green">mysql_real_query()</span><span style="color: green">取而代之</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: green">//</span><span style="color: green">（二进制数据可能包含字符</span><span style="color: green">&lsquo;\0&rsquo;</span><span style="color: green">，</span><span style="color: green">mysql_query()</span><span style="color: green">会将该字符解释为查询字符串结束）。</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: blue">if</span><span style="color: red"> (</span><span style="color: #880000">mysql_query</span><span style="color: red">(&amp;</span><span style="color: gray">mysql</span><span style="color: red">,</span><span style="color: teal">&quot;insert into `Users`(`username`,`password`)values('</span><span style="color: teal">王五</span><span style="color: teal">','abc123')&quot;</span><span style="color: red">))</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; {</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #880000">fprintf</span><span style="color: red">(</span><span style="color: #a000a0">stderr</span><span style="color: red">,</span><span style="color: teal">&quot;%s&quot;</span><span style="color: red">,</span><span style="color: #880000">mysql_error</span><span style="color: red">(&amp;</span><span style="color: gray">mysql</span><span style="color: red">));</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #880000">exit</span><span style="color: red">(1);</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; }</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: green">//</span><span style="color: green">回滚当前事务。</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: #880000">mysql_rollback</span><span style="color: red">(&amp;</span><span style="color: gray">mysql</span><span style="color: red">);</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: green">//</span><span style="color: green">提交当前事务。</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: green">//mysql_commit(&amp;mysql);</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: blue">if</span><span style="color: red"> (</span><span style="color: #880000">mysql_query</span><span style="color: red">(&amp;</span><span style="color: gray">mysql</span><span style="color: red">,</span><span style="color: teal">&quot;select * from `Users`&quot;</span><span style="color: red">))</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; {</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #880000">fprintf</span><span style="color: red">(</span><span style="color: #a000a0">stderr</span><span style="color: red">,</span><span style="color: teal">&quot;%s&quot;</span><span style="color: red">,</span><span style="color: #880000">mysql_error</span><span style="color: red">(&amp;</span><span style="color: gray">mysql</span><span style="color: red">));</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #880000">exit</span><span style="color: red">(1);</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; }</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: green">//</span><span style="color: green">检索完整的结果集至客户端。</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: blue">MYSQL_RES</span><span style="color: red"> *</span><span style="color: gray">rs</span><span style="color: red">=</span><span style="color: #880000">mysql_store_result</span><span style="color: red">(&amp;</span><span style="color: gray">mysql</span><span style="color: red">);</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: blue">if</span><span style="color: red"> (</span><span style="color: gray">rs</span><span style="color: red">==</span><span style="color: #a000a0">NULL</span><span style="color: red">)</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; {</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #880000">fprintf</span><span style="color: red">(</span><span style="color: #a000a0">stderr</span><span style="color: red">,</span><span style="color: teal">&quot;%s&quot;</span><span style="color: red">,</span><span style="color: #880000">mysql_error</span><span style="color: red">(&amp;</span><span style="color: gray">mysql</span><span style="color: red">));</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #880000">exit</span><span style="color: red">(1);</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; }</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: green">//</span><span style="color: green">返回结果集中的行数。</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: #880000">printf</span><span style="color: red">(</span><span style="color: teal">&quot;found %u rows.\n&quot;</span><span style="color: red">,</span><span style="color: #880000">mysql_num_rows</span><span style="color: red">(</span><span style="color: gray">rs</span><span style="color: red">));</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: green">//</span><span style="color: green">从结果集中获取下一行</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: blue">MYSQL_ROW </span><span style="color: gray">row</span><span style="color: red">;</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: blue">while</span><span style="color: red">( (</span><span style="color: gray">row</span><span style="color: red">=</span><span style="color: #880000">mysql_fetch_row</span><span style="color: red">(</span><span style="color: gray">rs</span><span style="color: red">))!=</span><span style="color: #a000a0">NULL</span><span style="color: red"> )</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; {</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #880000">printf</span><span style="color: red">(</span><span style="color: teal">&quot;%s,%s,%s\n&quot;</span><span style="color: red">,</span><span style="color: gray">row</span><span style="color: red">[0],</span><span style="color: gray">row</span><span style="color: red">[1],</span><span style="color: gray">row</span><span style="color: red">[2]);</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; }</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: green">//</span><span style="color: green">释放结果集使用的内存。</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: #880000">mysql_free_result</span><span style="color: red">(</span><span style="color: gray">rs</span><span style="color: red">);</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: green">//</span><span style="color: green">关闭前面打开的连接。</span></div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: #880000">mysql_close</span><span style="color: red">(&amp;</span><span style="color: gray">mysql</span><span style="color: red">);</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: #a000a0">mysql_library_end</span><span style="color: red">();</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="color: red">&nbsp;&nbsp;&nbsp; </span><span style="color: blue">return</span><span style="color: red"> 0;</span></div>
<div align="left"><span style="color: red">}</span></div>]]></description>
		</item>
		
			<item>
			<link>http://www.qingfengju.com/article.asp?id=231</link>
			<title><![CDATA[开源MFC扩展界面库：Ultimate Toolbox的编译]]></title>
			<author>dgx_lsyd3@163.com(淡月清风)</author>
			<category><![CDATA[Win32&amp;C++]]></category>
			<pubDate>Sun,18 Jul 2010 23:06:07 +0800</pubDate>
			<guid>http://www.qingfengju.com/default.asp?id=231</guid>
		<description><![CDATA[<p>下载地址：<br />
<a target="_blank" href="http://www.codeproject.com/KB/MFC/UltimateToolbox.aspx">http://www.codeproject.com/KB/MFC/UltimateToolbox.aspx</a></p>
<p>出现编译错误的文件：<br />
OXHTMLParser.cpp<br />
OXParser.cpp<br />
OXPhysicalEditEx.cpp<br />
OXQuickString.cpp</p>
<p>出错的原因乍看起来是字符串的引号不配对，实际上是因为Ultimate Toolbox的源码文件<br />
都是WINDOWS-1252编码的，且文件中包含编码是0xA0的字符，这些字符无法在中文操作系<br />
统下的VC++编辑器中正常显示。</p>
<p>解决方法是将这几个文件的编码转换为UTF-8,或者将&ldquo;区域和语言选项&rdquo;<br />
中&ldquo;非Unicode程序的语言&rdquo;改为&ldquo;英语-美国&rdquo;。</p>
<p>另外,VC++的头文件中&quot;WABTAGS.H&quot;也存在这个问题。</p>
<p><strong>备注0:</strong><br />
iconv是MinGW中的一个字符编码转换工具<br />
下载地址：<a target="_blank" href="http://sourceforge.net/projects/mingw/files/MinGW/libiconv/libiconv-1.13.1-1/">http://sourceforge.net/projects/mingw/files/MinGW/libiconv/libiconv-1.13.1-1/</a><br />
百度百科：<a target="_blank" href="http://baike.baidu.com/view/1437030.htm?fr=ala0_1">http://baike.baidu.com/view/1437030.htm?fr=ala0_1</a></p>
<p>使用方法：<br />
iconv.exe -f WINDOWS-1252 -t UTF-8 x.cpp&gt;x.cpp.utf8<br />
del x.cpp<br />
rename x.cpp.utf8 x.cpp<br />
&nbsp;<br />
<strong>备注1：</strong><br />
Ultimate Toolbox是开源的<br />
不开源的还有几个比较好的MFC扩展界面库：BCGControlBar,Xtreme Toolkit</p>
<p><strong>备注2：<br />
</strong>下载Ultimate Toolbox后，将几个压缩包解压缩到同一个目录，否则编译示例程序时<br />
会提示找不到UTSampleAbout.rc</p>
<p>目录结构如下：<br />
+Ultimate Toolbox<br />
&nbsp;&nbsp; -Problems.txt<br />
&nbsp;&nbsp; +Ultimate Toolbox<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -archive<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -include<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -lib<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -samples<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -source<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-license.htm<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-ChangeHistory.htm&nbsp;<br />
&nbsp;&nbsp; +UTBX93.chm</p>]]></description>
		</item>
		
			<item>
			<link>http://www.qingfengju.com/article.asp?id=230</link>
			<title><![CDATA[用MySQL Connector C++访问MySql数据库,中文UTF-8乱码的解决]]></title>
			<author>dgx_lsyd3@163.com(淡月清风)</author>
			<category><![CDATA[Win32&amp;C++]]></category>
			<pubDate>Sun,11 Jul 2010 11:54:21 +0800</pubDate>
			<guid>http://www.qingfengju.com/default.asp?id=230</guid>
		<description><![CDATA[<div>直接上代码：<br />
&nbsp;</div>
<div align="left"><span style="font-size: 9pt; color: green">// MySqlTest.cpp : </span><span style="font-size: 9pt; color: green">定义控制台应用程序的入口点。</span></div>
<div align="left"><span style="font-size: 9pt; color: green">//</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt; color: blue">#include</span><span style="font-size: 9pt"> <span style="color: teal">&lt;iostream&gt;</span></span></div>
<div align="left"><span style="font-size: 9pt; color: blue">using</span><span style="font-size: 9pt"> <span style="color: blue">namespace</span> <span style="color: black">std</span><span style="color: red">;</span></span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt; color: green">//MySQL Connector C++ 1.0.5,</span><span style="font-size: 9pt; color: green">接口跟</span><span style="font-size: 9pt; color: green">Oracle</span><span style="font-size: 9pt; color: green">的</span><span style="font-size: 9pt; color: green">OCCI</span><span style="font-size: 9pt; color: green">长的很像(跟JDBC也像)</span><span style="font-size: 9pt; color: green">,Oracle-MySql</span><span style="font-size: 9pt; color: green">官方网站可下载</span></div>
<div align="left"><span style="font-size: 9pt; color: green">//D:\Program Files\MySQL\MySQL Connector C++ 1.0.5\include</span></div>
<div align="left"><span style="font-size: 9pt; color: green">//D:\Program Files\MySQL\MySQL Connector C++ 1.0.5\lib\opt</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt; color: blue">#include</span><span style="font-size: 9pt"> <span style="color: teal">&lt;mysql_connection.h&gt;</span></span></div>
<div align="left"><span style="font-size: 9pt; color: blue">#include</span><span style="font-size: 9pt"> <span style="color: teal">&lt;cppconn/statement.h&gt;</span></span></div>
<div align="left"><span style="font-size: 9pt; color: blue">#include</span><span style="font-size: 9pt"> <span style="color: teal">&lt;cppconn/exception.h&gt;</span></span></div>
<div align="left"><span style="font-size: 9pt; color: blue">using</span><span style="font-size: 9pt"> <span style="color: blue">namespace</span> <span style="color: black">sql</span><span style="color: red">;</span></span></div>
<div align="left"><span style="font-size: 9pt; color: blue">using</span><span style="font-size: 9pt"> <span style="color: blue">namespace</span> <span style="color: black">sql</span><span style="color: red">::</span><span style="color: black">mysql</span><span style="color: red">;</span></span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt; color: blue">#pragma</span><span style="font-size: 9pt"> <span style="color: blue">comment</span><span style="color: red">(</span><span style="color: blue">lib</span><span style="color: red">,</span><span style="color: teal">&quot;mysqlcppconn.lib&quot;</span><span style="color: red">)</span></span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt; color: blue">int</span><span style="font-size: 9pt"> <span style="color: black">main</span><span style="color: red">(</span><span style="color: blue">int</span> <span style="color: black">argc</span><span style="color: red">,</span> <span style="color: blue">char</span><span style="color: red">*</span> <span style="color: black">argv</span><span style="color: red">[])</span></span></div>
<div align="left"><span style="font-size: 9pt; color: red">{</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp; <span style="color: blue">try</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp; <span style="color: red">{</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">数据库连接</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">MySQL_Connection</span> <span style="color: black">MySqlConn</span><span style="color: red">(</span><span style="color: teal">&quot;localhost&quot;</span><span style="color: red">,</span><span style="color: teal">&quot;root&quot;</span><span style="color: red">,</span><span style="color: teal">&quot;006355&quot;</span><span style="color: red">);</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">选择数据库</span><span style="font-size: 9pt; color: green">(</span><span style="font-size: 9pt; color: green">模式</span><span style="font-size: 9pt; color: green">)</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">MySqlConn</span><span style="color: red">.</span><span style="color: black">setSchema</span><span style="color: red">(</span><span style="color: teal">&quot;test&quot;</span><span style="color: red">);</span></span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">Statement</span> <span style="color: red">*</span><span style="color: black">pStatement</span> <span style="color: red">=</span> <span style="color: black">MySqlConn</span><span style="color: red">.</span><span style="color: black">createStatement</span><span style="color: red">();</span></span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">在</span><span style="font-size: 9pt; color: green">Mysql</span><span style="font-size: 9pt; color: green">数据库中，我设置的编码是</span><span style="font-size: 9pt; color: green">GB2312,</span><span style="font-size: 9pt; color: green">但是这里读出的仍是</span><span style="font-size: 9pt; color: green">UTF-8</span><span style="font-size: 9pt; color: green">编码的字符</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">所以需这句来解决乱码问题</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">执行无记录集返回的语句</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">pStatement</span><span style="color: red">-&gt;</span><span style="color: black">execute</span><span style="color: red">(</span><span style="color: teal">&quot;set names gb2312&quot;</span><span style="color: red">);</span></span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">执行有记录集返回的语句<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //注意反引号 &quot;<span style="font-size: 18px">`</span>&quot;,呵呵</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">ResultSet</span><span style="color: red">*</span> <span style="color: black">pRs</span><span style="color: red">=</span><span style="color: black">pStatement</span><span style="color: red">-&gt;</span><span style="color: black">executeQuery</span><span style="color: red">(</span><span style="color: teal">&quot;Select * from `Users`&quot;</span><span style="color: red">);</span></span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">while</span> <span style="color: red">(</span><span style="color: black">pRs</span><span style="color: red">-&gt;</span><span style="color: black">next</span><span style="color: red">())</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red">{</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">cout</span><span style="color: red">&lt;&lt;</span><span style="color: black">pRs</span><span style="color: red">-&gt;</span><span style="color: black">getInt</span><span style="color: red">(</span><span style="color: teal">&quot;id&quot;</span><span style="color: red">)&lt;&lt;</span><span style="color: black">endl</span><span style="color: red">;</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">string</span> <span style="color: black">sChineseText</span><span style="color: red">=</span><span style="color: black">pRs</span><span style="color: red">-&gt;</span><span style="color: black">getString</span><span style="color: red">(2);</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">cout</span><span style="color: red">&lt;&lt;</span><span style="color: black">sChineseText</span><span style="color: red">&lt;&lt;</span><span style="color: teal">&quot;:&quot;</span><span style="color: red">;</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">输出汉字的编码</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: green">//D5 C5 C8 FD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9pt; color: green">张三</span><span style="font-size: 9pt; color: green">&nbsp; ANSI/OEM936：GBK/GB2312</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: green">//E5 BC A0 E4 B8 89&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9pt; color: green">张三</span><span style="font-size: 9pt; color: green">&nbsp; UTF8</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">for</span> <span style="color: red">(</span><span style="color: black">size_t</span> <span style="color: black">i</span><span style="color: red">=0;</span><span style="color: black">i</span><span style="color: red">&lt;</span><span style="color: black">sChineseText</span><span style="color: red">.</span><span style="color: black">length</span><span style="color: red">();</span><span style="color: black">i</span><span style="color: red">++)</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red">{</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">printf</span><span style="color: red">(</span><span style="color: teal">&quot;%02X &quot;</span><span style="color: red">,(</span><span style="color: blue">unsigned</span> <span style="color: blue">char</span><span style="color: red">)</span><span style="color: black">sChineseText</span><span style="color: red">[</span><span style="color: black">i</span><span style="color: red">]);</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red">}</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">cout</span><span style="color: red">&lt;&lt;</span><span style="color: black">endl</span><span style="color: red">;</span></span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">cout</span><span style="color: red">&lt;&lt;</span><span style="color: black">pRs</span><span style="color: red">-&gt;</span><span style="color: black">getString</span><span style="color: red">(</span><span style="color: teal">&quot;password&quot;</span><span style="color: red">)&lt;&lt;</span><span style="color: black">endl</span><span style="color: red">&lt;&lt;</span><span style="color: black">endl</span><span style="color: red">;</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red">}</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">pRs</span><span style="color: red">-&gt;</span><span style="color: black">close</span><span style="color: red">();</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">pStatement</span><span style="color: red">-&gt;</span><span style="color: black">close</span><span style="color: red">();</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">MySqlConn</span><span style="color: red">.</span><span style="color: black">close</span><span style="color: red">();</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp; <span style="color: red">}</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp; <span style="color: blue">catch</span> <span style="color: red">(</span><span style="color: black">SQLException</span><span style="color: red">&amp;</span> <span style="color: black">ex</span><span style="color: red">)</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp; <span style="color: red">{</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">cout</span><span style="color: red">&lt;&lt;</span><span style="color: teal">&quot;Error:&quot;</span><span style="color: red">&lt;&lt;</span><span style="color: black">ex</span><span style="color: red">.</span><span style="color: black">what</span><span style="color: red">()&lt;&lt;</span><span style="color: black">endl</span><span style="color: red">;</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp; <span style="color: red">}</span></span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp; <span style="color: blue">return</span> <span style="color: red">0;</span></span></div>
<div align="left"><span style="font-size: 9pt; color: red">}</span><br />
<br />
文档参见：《MySQL 5.5 Reference Manual》<a target="_blank" href="http://dev.mysql.com/doc/refman/5.5/en/connector-cpp.html">21.5. MySQL Connector/C++</a><br />
<br />
可惜的是：<br />
<span class="bold"><strong>22.5.12.2: </strong></span><span class="bold"><strong>Which MySQL Server version(s) is MySQL Connector/C++ compatible with? </strong></span><br />
MySQL Connector/C++ fully <span style="color: #ff0000">supports MySQL Server version 5.1 and later</span>.</div>
<p>使用低版本MySQL服务器的话，还需MySQL C API。</p>]]></description>
		</item>
		
			<item>
			<link>http://www.qingfengju.com/article.asp?id=229</link>
			<title><![CDATA[控制台程序的文字颜色]]></title>
			<author>dgx_lsyd3@163.com(淡月清风)</author>
			<category><![CDATA[Win32&amp;C++]]></category>
			<pubDate>Sat,10 Jul 2010 11:21:23 +0800</pubDate>
			<guid>http://www.qingfengju.com/default.asp?id=229</guid>
		<description><![CDATA[<div align="left"><span style="color: green; font-family: 'Courier New'"><font style="font-size: 9pt">// 控制台程序的基本文本颜色</font></span></div>
<div align="left"><span style="color: green; font-family: 'Courier New'"><font style="font-size: 9pt">// #define FOREGROUND_BLUE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0001 // text color contains blue.</font></span></div>
<div align="left"><span style="color: green; font-family: 'Courier New'"><font style="font-size: 9pt">// #define FOREGROUND_GREEN&nbsp;&nbsp;&nbsp;&nbsp; 0x0002 // text color contains green.</font></span></div>
<div align="left"><span style="color: green; font-family: 'Courier New'"><font style="font-size: 9pt">// #define FOREGROUND_RED&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0004 // text color contains red.</font></span></div>
<div align="left"><span style="color: green; font-family: 'Courier New'"><font style="font-size: 9pt">// #define FOREGROUND_INTENSITY 0x0008 // text color is intensified.</font></span></div>
<div align="left"><br />
<span style="font-size: 9pt; color: green; font-family: Courier New">//不同的组合可呈现如下几种颜色<br />
&nbsp;</span></div>
<div align="left">
<table id="table1" cellpadding="6" width="27%" bgcolor="#000000" border="0" style="border-collapse: collapse">
    <tbody>
        <tr>
            <td><font face="Fixedsys" style="font-size: 9pt">■ 0x00<br />
            <font color="#000080">■ 0x01</font><br />
            <font color="#008000">■ 0x02</font> <br />
            <font color="#008080">■ 0x03</font><br />
            <font color="#800000">■ 0x04</font><br />
            <font color="#800080">■ 0x05</font><br />
            <font color="#808000">■ 0x06</font><br />
            <font color="#c0c0c0">■ 0x07</font><br />
            <font color="#808080">■ 0x08</font><br />
            <font color="#0000ff">■ 0x09</font><br />
            <font color="#00ff00">■ 0x0a</font><br />
            <font color="#00ffff">■ 0x0b</font><br />
            <font color="#ff0000">■ 0x0c</font><br />
            <font color="#ff00ff">■ 0x0d</font><br />
            <font color="#ffff00">■ 0x0e<br />
            </font><font color="#ffffff">■ 0x0f</font></font></td>
        </tr>
    </tbody>
</table>
</div>
<div align="left">&nbsp;</div>
<div align="left"><font face="Courier New" color="#008000" style="font-size: 9pt">//示例程序</font></div>
<div align="left"><span style="color: blue; font-family: 'Courier New'"><font style="font-size: 9pt">int</font><font style="font-size: 9pt"> </font></span><span style="color: #880000; font-family: 'Courier New'"><font style="font-size: 9pt">main</font></span><span style="color: red; font-family: 'Courier New'"><font style="font-size: 9pt">(</font></span><font face="Courier New" style="font-size: 9pt"><span style="color: blue">int</span></font><font face="Courier New" style="font-size: 9pt"><span style="color: blue"> </span></font><span style="color: navy; font-family: 'Courier New'"><font style="font-size: 9pt">argc</font></span><span style="color: red; font-family: 'Courier New'"><font style="font-size: 9pt">, </font></span><span style="color: blue; font-family: 'Courier New'"><font style="font-size: 9pt">char</font></span><span style="color: red; font-family: 'Courier New'"><font style="font-size: 9pt">* </font></span><span style="color: navy; font-family: 'Courier New'"><font style="font-size: 9pt">argv</font></span><span style="color: red; font-family: 'Courier New'"><font style="font-size: 9pt">[])</font></span></div>
<div align="left"><span style="color: red; font-family: 'Courier New'"><font style="font-size: 9pt">{</font></span></div>
<div align="left"><span style="color: red; font-family: 'Courier New'"><font style="font-size: 9pt">&nbsp;&nbsp;&nbsp; </font></span><span style="color: blue; font-family: 'Courier New'"><font style="font-size: 9pt">HANDLE </font></span><span style="color: navy; font-family: 'Courier New'"><font style="font-size: 9pt">hConsole</font></span><span style="color: red; font-family: 'Courier New'"><font style="font-size: 9pt">=</font></span><span style="color: #880000; font-family: 'Courier New'"><font style="font-size: 9pt">GetStdHandle</font></span><span style="color: red; font-family: 'Courier New'"><font style="font-size: 9pt">(</font></span><span style="color: #a000a0; font-family: 'Courier New'"><font style="font-size: 9pt">STD_OUTPUT_HANDLE</font></span><span style="color: red; font-family: 'Courier New'"><font style="font-size: 9pt">);</font></span></div>
<div><span style="color: red; font-family: 'Courier New'"><font style="font-size: 9pt">&nbsp;&nbsp;&nbsp; </font></span><span style="color: #880000; font-family: 'Courier New'"><font style="font-size: 9pt">SetConsoleTextAttribute</font></span><span style="color: red; font-family: 'Courier New'"><font style="font-size: 9pt">(</font></span><span style="color: navy; font-family: 'Courier New'"><font style="font-size: 9pt">hConsole</font></span><font style="font-size: 9pt"><span style="color: red; font-family: 'Courier New'">,0x0c<span style="color: #ff0000">);</span><span style="color: #339966">//基本颜色的组合<br />
</span>&nbsp;&nbsp;</span><span style="font-family: 'Courier New'">&nbsp; </span><span style="color: navy; font-family: Courier New"><span style="font-size: 9pt; color: navy; font-family: 'Courier New'">c</span><span style="font-size: 9pt; color: navy; font-family: Courier New">out&lt;&lt;</span></span><font color="#008080"><span style="font-size: 9pt; font-family: Courier New">&quot;</span></font><span style="color: #008080; font-family: 'Courier New'">红色文字&quot;</span><span style="font-size: 9pt; color: navy; font-family: 'Courier New'">&lt;&lt;</span><span style="font-family: 'Courier New'"><font color="#800000">endl</font></span><font color="#ff0000"><span style="font-family: 'Courier New'">;</span></font><span style="color: green; font-family: 'Courier New'"><br />
&nbsp;</span></font></div>
<div align="left"><span style="color: red; font-family: 'Courier New'"><font style="font-size: 9pt">&nbsp;&nbsp;&nbsp; </font></span><span style="color: black; font-family: 'Courier New'"><font style="font-size: 9pt">return</font></span><span style="color: red; font-family: 'Courier New'"><font style="font-size: 9pt"> 0;</font></span></div>
<div align="left"><span style="color: red; font-family: 'Courier New'"><font style="font-size: 9pt">}<br />
&nbsp;</font></span></div>
<div align="left">
<table id="table2" cellpadding="6" width="27%" bgcolor="#000000" border="0" style="border-collapse: collapse">
    <tbody>
        <tr>
            <td><span style="color: #ff0000; font-family: 'Fixedsys'"><font style="font-size: 9pt">红色文字</font></span></td>
        </tr>
    </tbody>
</table>
</div>
<p>备注：在控制台下可以通过color命令设置控制台窗口的文字颜色，例如&quot;color 0c&quot;设置颜色为红色。<br />
具体使用方法可执行&quot;color /?&quot;</p>]]></description>
		</item>
		
			<item>
			<link>http://www.qingfengju.com/article.asp?id=227</link>
			<title><![CDATA[在VC++中使用OCCI]]></title>
			<author>dgx_lsyd3@163.com(淡月清风)</author>
			<category><![CDATA[Win32&amp;C++]]></category>
			<pubDate>Mon,21 Jun 2010 21:15:49 +0800</pubDate>
			<guid>http://www.qingfengju.com/default.asp?id=227</guid>
		<description><![CDATA[<p>&nbsp;<b><span style="font-size: 9pt; font-family: 'Courier New'">1.</span></b><b><span style="font-size: 9pt; font-family: 宋体">简介</span></b><br />
<span style="font-size: 9pt; font-family: 宋体">在</span><span style="font-size: 9pt; font-family: 'Courier New'">Windows</span><span style="font-size: 9pt; font-family: 宋体">下访问</span><span style="font-size: 9pt; font-family: 'Courier New'">Oracle</span><span style="font-size: 9pt; font-family: 宋体">数据库可以使用</span><span style="font-size: 9pt; font-family: 'Courier New'">ADO,ADO.Net,OLEDB,ODBC,</span><span style="font-size: 9pt; font-family: 宋体">跨平台的</span><span style="font-size: 9pt; font-family: 'Courier New'">OCCI</span><span style="font-size: 9pt; font-family: 宋体">等方法</span><span style="font-size: 9pt; font-family: 'Courier New'">,</span><span style="font-size: 9pt; font-family: 宋体">其中速度最快，对</span><span style="font-size: 9pt; font-family: 'Courier New'">Oracle</span><span style="font-size: 9pt; font-family: 宋体">支持最完整的是</span><span style="font-size: 9pt; font-family: 'Courier New'">Oracle</span><span style="font-size: 9pt; font-family: 宋体">提供的</span><span style="font-size: 9pt; font-family: 'Courier New'">OCCI.</span></p>
<div align="left"><b><span style="font-size: 9pt; font-family: 'Courier New'">2.</span></b><b><span style="font-size: 9pt; font-family: 宋体">安装</span></b><b><span style="font-size: 9pt; font-family: 'Courier New'">OCCI SDK</span></b></div>
<div align="left"><span style="font-size: 9pt; font-family: 'Courier New'">OCCI SDK</span><span style="font-size: 9pt; font-family: 宋体">包含在</span><span style="font-size: 9pt; font-family: 'Courier New'">Oracle</span><span style="font-size: 9pt; font-family: 宋体">客户端中，在如下位置可以找到：</span></div>
<div align="left"><span style="font-size: 9pt; font-family: 宋体">头文件：</span><span style="font-size: 9pt; font-family: 'Courier New'">C:\oracle\ora92\oci\include</span></div>
<div align="left"><span style="font-size: 9pt; font-family: 宋体">库文件：</span><span style="font-size: 9pt; font-family: 'Courier New'">C:\oracle\ora92\oci\lib\msvc</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt; font-family: 宋体">推荐安装</span><span style="font-size: 9pt; font-family: 'Courier New'">Oracle</span><span style="font-size: 9pt; font-family: 宋体">即时客户端（</span><span style="font-size: 9pt; font-family: 'Courier New'">Instant Client</span><span style="font-size: 9pt; font-family: 宋体">），它也包含有</span><span style="font-size: 9pt; font-family: 'Courier New'">OCCI SDK</span><span style="font-size: 9pt; font-family: 宋体">。</span></div>
<div align="left"><span style="font-size: 9pt; font-family: 宋体">头文件：</span><span style="font-size: 9pt; font-family: 'Courier New'">instantclient_10_2\sdk\include</span></div>
<div align="left"><span style="font-size: 9pt; font-family: 宋体">库文件：</span><span style="font-size: 9pt; font-family: 'Courier New'">instantclient_10_2\sdk\lib\msvc</span></div>
<div align="left">&nbsp;</div>
<div align="left"><b><span style="font-size: 9pt; font-family: 'Courier New'">3.</span></b><b><span style="font-size: 9pt; font-family: 宋体">编译</span></b><b><span style="font-size: 9pt; font-family: 'Courier New'">OCCI</span></b><b><span style="font-size: 9pt; font-family: 宋体">程序</span></b></div>
<div align="left"><span style="font-size: 9pt; font-family: 宋体">关于在</span><span style="font-size: 9pt; font-family: 'Courier New'">VC</span><span style="font-size: 9pt; font-family: 宋体">下如何编译，调试</span><span style="font-size: 9pt; font-family: 'Courier New'">OCCI</span><span style="font-size: 9pt; font-family: 宋体">程序，参见《</span><span style="font-size: 9pt; font-family: 'Courier New'"><a target="_blank" href="http://www.qingfengju.com/article.asp?id=226">VC++<span style="font-family: 宋体">调试</span>OCCI<span style="font-family: 宋体">程序的关键设置</span></a></span><span style="font-size: 9pt; font-family: 宋体">》</span></div>
<div align="left">&nbsp;</div>
<div align="left"><b><span style="font-size: 9pt; font-family: 'Courier New'">4.OCCI</span></b><b><span style="font-size: 9pt; font-family: 宋体">编程步骤</span></b></div>
<div align="left">&nbsp;</div>
<div align="left"><b><span style="font-size: 9pt; font-family: 'Courier New'">4.1 </span></b><b><span style="font-size: 9pt; font-family: 宋体">连接到数据库</span></b></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">//</span><span style="font-size: 9pt; color: green; font-family: 宋体">创建</span><span style="font-size: 9pt; color: green; font-family: 'Courier New'">OCCI</span><span style="font-size: 9pt; color: green; font-family: 宋体">上下文环境</span></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">Environment</span><span style="font-size: 9pt; font-family: 'Courier New'"> <span style="color: red">*</span><span style="color: black">env</span> <span style="color: red">=</span> <span style="color: black">Environment</span><span style="color: red">::</span><span style="color: black">createEnvironment</span><span style="color: red">();</span></span></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">assert</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">(</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">env</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">!=</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">NULL</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">);</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">//</span><span style="font-size: 9pt; color: green; font-family: 宋体">创建数据库连接</span></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">Connection</span><span style="font-size: 9pt; font-family: 'Courier New'"> <span style="color: red">*</span><span style="color: black">conn</span> <span style="color: red">=</span> <span style="color: black">env</span><span style="color: red">-&gt;</span><span style="color: black">createConnection</span><span style="color: red">(</span><span style="color: teal">&quot;uid&quot;</span><span style="color: red">,</span> <span style="color: teal">&quot;pwd&quot;</span><span style="color: red">,</span><span style="color: teal">&quot;oracle_svr_name&quot;</span><span style="color: red">);</span></span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">//...</span></div>
<div align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">// todo:</span><span style="font-size: 9pt; color: green; font-family: 宋体">插入自己的代码</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">//</span><span style="font-size: 9pt; color: green; font-family: 宋体">关闭连接</span></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">env</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">-&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">terminateConnection</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">(</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">conn</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">);</span></div>
<div align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">//</span><span style="font-size: 9pt; color: green; font-family: 宋体">释放</span></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">Environment</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">::</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">terminateEnvironment</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">(</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">env</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">);</span></div>
<div align="left">&nbsp;</div>
<div align="left"><b><span style="font-size: 9pt; font-family: 'Courier New'">4.2 </span></b><b><span style="font-size: 9pt; font-family: 宋体">执行基本的</span></b><b><span style="font-size: 9pt; font-family: 'Courier New'">SQL</span></b><b><span style="font-size: 9pt; font-family: 宋体">语句</span></b></div>
<div align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">//</span><span style="font-size: 9pt; color: green; font-family: 宋体">创建</span><span style="font-size: 9pt; color: green; font-family: 'Courier New'">SQL</span><span style="font-size: 9pt; color: green; font-family: 宋体">语句控制句柄</span></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">Statement</span><span style="font-size: 9pt; font-family: 'Courier New'"> <span style="color: red">*</span><span style="color: black">stmt</span> <span style="color: red">=</span> <span style="color: black">conn</span><span style="color: red">-&gt;</span><span style="color: black">createStatement</span><span style="color: red">();</span></span></div>
<div align="left">&nbsp;</div>
<div align="left"><b><span style="font-size: 9pt; font-family: 'Courier New'">a.</span></b><b><span style="font-size: 9pt; font-family: 宋体">执行一般的</span></b><b><span style="font-size: 9pt; font-family: 'Courier New'">SQL</span></b><b><span style="font-size: 9pt; font-family: 宋体">语句</span></b></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">stmt</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">-&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">executeUpdate</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">(</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&quot;Create TABLE basket_tab (fruit VARCHAR2(30), quantity NUMBER)&quot;</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">);</span></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">stmt</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">-&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">executeUpdate</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">(</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&quot;delete basket_tab&quot;</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">);</span></div>
<div align="left">&nbsp;</div>
<div align="left"><b><span style="font-size: 9pt; font-family: 'Courier New'">b.</span></b><b><span style="font-size: 9pt; font-family: 宋体">重复利用</span></b><b><span style="font-size: 9pt; font-family: 'Courier New'">SQL</span></b><b><span style="font-size: 9pt; font-family: 宋体">语句</span></b><b><span style="font-size: 9pt; font-family: 'Courier New'">,</span></b><b><span style="font-size: 9pt; font-family: 宋体">参数化的</span></b><b><span style="font-size: 9pt; font-family: 'Courier New'">SQL</span></b><b><span style="font-size: 9pt; font-family: 宋体">语句</span></b></div>
<div align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">//:1,:2</span><span style="font-size: 9pt; color: green; font-family: 宋体">是参数占位符</span></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">stmt</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">-&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">setSQL</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">(</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&quot;Insert INTO basket_tab VALUES(:1,:2)&quot;</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">);</span></div>
<div align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">// </span><span style="font-size: 9pt; color: green; font-family: 宋体">第一个参数</span></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">stmt</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">-&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">setString</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">(1,</span><span style="font-size: 9pt; font-family: 'Courier New'"> <span style="color: teal">&quot;Bananas&quot;</span><span style="color: red">);</span> </span></div>
<div align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">// </span><span style="font-size: 9pt; color: green; font-family: 宋体">第二个参数</span></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">stmt</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">-&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">setInt</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">(2,</span><span style="font-size: 9pt; font-family: 'Courier New'"> <span style="color: red">5);</span> </span></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">stmt</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">-&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">executeUpdate</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">();</span></div>
<div align="left">&nbsp;</div>
<div align="left">&nbsp;<b><span style="font-size: 9pt; font-family: 'Courier New'">c.</span></b><b><span style="font-size: 9pt; font-family: 宋体">一次修改多行数据</span></b></div>
<div align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">//</span><span style="font-size: 9pt; color: green; font-family: 宋体">最多允许的迭代次数，注意这个参数需要在</span><span style="font-size: 9pt; color: green; font-family: 'Courier New'">setXXX</span><span style="font-size: 9pt; color: green; font-family: 宋体">系列函数之前执行</span></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">stmt</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">-&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">setMaxIterations</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">(</span><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">int</span><span style="font-size: 9pt; font-family: 'Courier New'"> <span style="color: black">maxIterations</span><span style="color: red">);</span></span></div>
<div align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">//</span><span style="font-size: 9pt; color: green; font-family: 宋体">指定某个参数的大小，</span><span style="font-size: 9pt; color: green; font-family: 'Courier New'">string</span><span style="font-size: 9pt; color: green; font-family: 宋体">和</span><span style="font-size: 9pt; color: green; font-family: 'Courier New'">byte</span><span style="font-size: 9pt; color: green; font-family: 宋体">需要</span></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">stmt</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">-&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">setMaxParamSize</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">(</span><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">int</span><span style="font-size: 9pt; font-family: 'Courier New'"> <span style="color: black">parameterIndex</span><span style="color: red">,</span> <span style="color: blue">int</span> <span style="color: black">maxParamSize</span><span style="color: red">);</span></span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">for</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">(...)</span></div>
<div align="left"><span style="font-size: 9pt; color: red; font-family: 'Courier New'">{</span></div>
<div align="left"><span style="font-size: 9pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; <span style="color: green">// </span></span><span style="font-size: 9pt; color: green; font-family: 宋体">第一个参数</span></div>
<div align="left"><span style="font-size: 9pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; <span style="color: black">stmt</span><span style="color: red">-&gt;</span><span style="color: black">setString</span><span style="color: red">(1,</span> <span style="color: teal">&quot;Bananas&quot;</span><span style="color: red">);</span> </span></div>
<div align="left"><span style="font-size: 9pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; <span style="color: green">// </span></span><span style="font-size: 9pt; color: green; font-family: 宋体">第二个参数</span></div>
<div align="left"><span style="font-size: 9pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; <span style="color: black">stmt</span><span style="color: red">-&gt;</span><span style="color: black">setInt</span><span style="color: red">(2,</span> <span style="color: red">5);</span> </span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; <span style="color: green">//</span></span><span style="font-size: 9pt; color: green; font-family: 宋体">増加一行记录，类似于</span><span style="font-size: 9pt; color: green; font-family: 'Courier New'">ADO</span><span style="font-size: 9pt; color: green; font-family: 宋体">的</span><span style="font-size: 9pt; color: green; font-family: 'Courier New'">AddNew</span></div>
<div align="left"><span style="font-size: 9pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; <span style="color: black">pStmt</span><span style="color: red">-&gt;</span><span style="color: black">addIteration</span><span style="color: red">();</span></span></div>
<div align="left"><span style="font-size: 9pt; color: red; font-family: 'Courier New'">}</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">stmt</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">-&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">executeUpdate</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">();</span></div>
<div align="left">&nbsp;</div>
<div align="left"><b><span style="font-size: 9pt; font-family: 'Courier New'">d.</span></b><b><span style="font-size: 9pt; font-family: 宋体">执行查询：获取结果集</span></b><b><span style="font-size: 9pt; font-family: 'Courier New'">(</span></b><b><span style="font-size: 9pt; font-family: 宋体">记录集</span></b><b><span style="font-size: 9pt; font-family: 'Courier New'">)</span></b></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">ResultSet</span><span style="font-size: 9pt; font-family: 'Courier New'"> <span style="color: red">*</span><span style="color: black">rs</span> <span style="color: red">=</span> <span style="color: black">stmt</span><span style="color: red">-&gt;</span><span style="color: black">executeQuery</span><span style="color: red">(</span><span style="color: teal">&quot;Select * FROM basket_tab&quot;</span><span style="color: red">);</span></span></div>
<div align="left"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">while</span><span style="font-size: 9pt; font-family: 'Courier New'"> <span style="color: red">(</span><span style="color: black">rs</span><span style="color: red">-&gt;</span><span style="color: black">next</span><span style="color: red">())</span></span></div>
<div align="left"><span style="font-size: 9pt; color: red; font-family: 'Courier New'">{</span></div>
<div align="left"><span style="font-size: 9pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; <span style="color: black">string</span> <span style="color: black">fruit</span> <span style="color: red">=</span> <span style="color: black">rs</span><span style="color: red">-&gt;</span><span style="color: black">getString</span><span style="color: red">(1);</span> <span style="color: green">// get the first column as string</span></span></div>
<div align="left"><span style="font-size: 9pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; <span style="color: blue">int</span> <span style="color: black">quantity</span> <span style="color: red">=</span> <span style="color: black">rs</span><span style="color: red">-&gt;</span><span style="color: black">getInt</span><span style="color: red">(2);</span> <span style="color: green">// get the second column as int</span></span></div>
<div align="left"><span style="font-size: 9pt; color: red; font-family: 'Courier New'">}</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">//</span><span style="font-size: 9pt; color: green; font-family: 宋体">关闭结果集</span></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">stmt</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">-&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">closeResultSet</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">(</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">rs</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">);</span></div>
<div align="left">&nbsp;</div>
<div align="left"><b><span style="font-size: 9pt; font-family: 'Courier New'">e.</span></b><b><span style="font-size: 9pt; font-family: 宋体">执行存储过程</span></b></div>
<div align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">//</span><span style="font-size: 9pt; color: green; font-family: 宋体">指定存储过程</span><span style="font-size: 9pt; color: green; font-family: 'Courier New'">countFruit</span></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">stmt</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">-&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">setSQL</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">(</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&quot;BEGIN countFruit(:1, :2); END:&quot;</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">);</span></div>
<div align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">//</span><span style="font-size: 9pt; color: green; font-family: 宋体">设置第一个参数</span></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">stmt</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">-&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">setString</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">(1,</span><span style="font-size: 9pt; font-family: 'Courier New'"> <span style="color: teal">&quot;Apples&quot;</span><span style="color: red">);</span></span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">int</span><span style="font-size: 9pt; font-family: 'Courier New'"> <span style="color: black">quantity</span><span style="color: red">;</span></span></div>
<div align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">//</span><span style="font-size: 9pt; color: green; font-family: 宋体">注册输出参数</span></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">stmt</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">-&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">registerOutParam</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">(2,</span><span style="font-size: 9pt; font-family: 'Courier New'"> <span style="color: black">Type</span><span style="color: red">::</span><span style="color: black">OCCIINT</span><span style="color: red">,</span> <span style="color: blue">sizeof</span><span style="color: red">(</span><span style="color: black">quantity</span><span style="color: red">));</span></span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">//</span><span style="font-size: 9pt; color: green; font-family: 宋体">执行此存储过程</span></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">stmt</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">-&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">executeUpdate</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">();</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">//</span><span style="font-size: 9pt; color: green; font-family: 宋体">释放</span><span style="font-size: 9pt; color: green; font-family: 'Courier New'">SQL</span><span style="font-size: 9pt; color: green; font-family: 宋体">语句控制句柄</span></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">conn</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">-&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">terminateStatement</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">(</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">Statement</span><span style="font-size: 9pt; font-family: 'Courier New'"> <span style="color: red">*</span><span style="color: black">stmt</span><span style="color: red">);</span></span></div>
<div align="left">&nbsp;</div>
<div align="left"><b><span style="font-size: 9pt; font-family: 'Courier New'">4.3 </span></b><b><span style="font-size: 9pt; font-family: 宋体">事务</span></b></div>
<div align="left"><span style="font-size: 9pt; font-family: 宋体">所有的</span><span style="font-size: 9pt; font-family: 'Courier New'">DDL</span><span style="font-size: 9pt; font-family: 宋体">默认开始并自动提交一个事务</span></div>
<div align="left"><span style="font-size: 9pt; font-family: 宋体">所有的</span><span style="font-size: 9pt; font-family: 'Courier New'">DML</span><span style="font-size: 9pt; font-family: 宋体">默认开始一个事务，且不会自动提交</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">//</span><span style="font-size: 9pt; color: green; font-family: 宋体">可以指定</span><span style="font-size: 9pt; color: green; font-family: 'Courier New'">DML</span><span style="font-size: 9pt; color: green; font-family: 宋体">是否自动提交</span></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">stmt</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">-&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">setAutoCommit</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">(</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">TRUE</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">/</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">FALSE</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">);</span></div>
<div align="left">&nbsp;</div>
<div align="left"><span style="font-size: 9pt; color: green; font-family: 'Courier New'">//</span><span style="font-size: 9pt; color: green; font-family: 宋体">也可以手动提交或回滚。</span></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">conn</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">-&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">commit</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">();</span></div>
<div align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">conn</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">-&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">rollback</span><span style="font-size: 9pt; color: red; font-family: 'Courier New'">();</span></div>
<div align="left">&nbsp;</div>
<div align="left"><b><span style="font-size: 9pt; font-family: 'Courier New'">4.4 </span></b><b><span style="font-size: 9pt; font-family: 宋体">异常处理</span></b></div>
<div align="left"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">try</span></div>
<div align="left"><span style="font-size: 9pt; color: red; font-family: 'Courier New'">{</span></div>
<div align="left"><span style="font-size: 9pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; <span style="color: green">//OCCI</span></span><span style="font-size: 9pt; color: green; font-family: 宋体">程序</span></div>
<div align="left"><span style="font-size: 9pt; color: red; font-family: 'Courier New'">}</span></div>
<div align="left"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">catch</span><span style="font-size: 9pt; font-family: 'Courier New'"> <span style="color: red">(</span><span style="color: black">SQLException</span> <span style="color: red">&amp;</span><span style="color: black">sqlExcp</span><span style="color: red">)</span></span></div>
<div align="left"><span style="font-size: 9pt; color: red; font-family: 'Courier New'">{</span></div>
<div align="left"><span style="font-size: 9pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; <span style="color: black">cerr</span> <span style="color: red">&lt;&lt;</span><span style="color: black">sqlExcp</span><span style="color: red">.</span><span style="color: black">getErrorCode</span> <span style="color: red">&lt;&lt;</span> <span style="color: teal">&quot;: &quot;</span> <span style="color: red">&lt;&lt;</span> <span style="color: black">sqlExcp</span><span style="color: red">.</span><span style="color: black">getErrorMessage</span><span style="color: red">()</span> <span style="color: red">&lt;&lt;</span> <span style="color: black">endl</span><span style="color: red">;</span></span></div>
<div align="left"><span style="font-size: 9pt; color: red; font-family: 'Courier New'">}</span></div>
<div align="left"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'">catch</span><span style="font-size: 9pt; font-family: 'Courier New'"> <span style="color: red">(</span><span style="color: black">exception</span> <span style="color: red">&amp;</span><span style="color: black">excp</span><span style="color: red">)</span></span></div>
<div align="left"><span style="font-size: 9pt; color: red; font-family: 'Courier New'">{</span></div>
<div align="left"><span style="font-size: 9pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; <span style="color: black">cerr</span> <span style="color: red">&lt;&lt;</span> <span style="color: black">excp</span><span style="color: red">.</span><span style="color: black">what</span><span style="color: red">()</span> <span style="color: red">&lt;&lt;</span> <span style="color: black">endl</span><span style="color: red">;</span></span></div>
<div align="left"><span style="font-size: 9pt; color: red; font-family: 'Courier New'">}</span></div>
<div align="left">&nbsp;<font class="Apple-style-span" face="'Courier New', Verdana, sans-serif"><b><br />
</b></font></div>]]></description>
		</item>
		
			<item>
			<link>http://www.qingfengju.com/article.asp?id=226</link>
			<title><![CDATA[VC++调试OCCI程序的关键设置]]></title>
			<author>dgx_lsyd3@163.com(淡月清风)</author>
			<category><![CDATA[Win32&amp;C++]]></category>
			<pubDate>Mon,21 Jun 2010 21:15:49 +0800</pubDate>
			<guid>http://www.qingfengju.com/default.asp?id=226</guid>
		<description><![CDATA[<p><strong>
<p>#define WIN32COMMON<br />
<span style="color: rgb(0, 153, 0); ">//解决error C2995: 'getVector' : template function has already been defined</span></p>
<p>#include &lt;occi.h&gt;<br />
using namespace oracle::occi;<br />
<p>#pragma comment(lib,&quot;oci.lib&quot;)<br />
#pragma comment(lib,&quot;ociw32.lib&quot;)<br />
#pragma comment(lib,&quot;oraocci10.lib&quot;)</p>
</p>
<span style="color: rgb(0, 153, 0); ">//解决无法调试OCCI的问题<br />
</span><span style="color: rgb(0, 153, 0); ">//参考sdk\demo目录下的make.bat<br />
</span><br />
对于VS2003：</strong><br />
<span style="font-family: Tahoma; ">1.项目属性 -&gt; C/C++ -&gt; 代码生成 -&gt; 运行时库 -&gt; <strong>多线程调试 DLL (/MDd)</strong><br />
2.项目属性 -&gt;&nbsp;链接器 -&gt; 输入 -&gt; 附加依赖项 -&gt;&nbsp;<strong>msvcrt.lib msvcprt.lib</strong></span><strong><br />
<br />
对于VC++6.0<br />
</strong><span style="font-family: Tahoma; ">1.Project Settings -&gt; C/C++ -&gt; Code Generation -&gt; Use run-time library: -&gt; <strong>Debug Multithreaded DLL</strong><br />
2.Project Settings -&gt; Link -&gt; Object/library modules:末尾添加</span><strong><span style="font-family: Tahoma; ">msvcrt.lib msvcprt.lib&nbsp;<br />
<br type="_moz" />
</span><br type="_moz" />
</strong></p>]]></description>
		</item>
		
			<item>
			<link>http://www.qingfengju.com/article.asp?id=223</link>
			<title><![CDATA[SVN服务器的创建]]></title>
			<author>dgx_lsyd3@163.com(淡月清风)</author>
			<category><![CDATA[Win32&amp;C++]]></category>
			<pubDate>Mon,21 Jun 2010 21:15:49 +0800</pubDate>
			<guid>http://www.qingfengju.com/default.asp?id=223</guid>
		<description><![CDATA[<h4><font face="Courier New">0.安装Subversion</font></h4>
<p><font face="Courier New">可在<a target="_blank" href="http://subversion.tigris.org/">http://subversion.tigris.org</a>下载。</font></p>
<h4><font face="Courier New">1.选定一个目录(例如：E:\SvnRepository)作为版本库的根目录。</font></h4>
<h4><font face="Courier New">2.创建自己项目的版本库(例如ProjTest),有两种方法：</font></h4>
<h4><font face="Courier New">a.用命令行创建版本库</font></h4>
<div style="border-right: 1px solid; padding-right: 4px; border-top: 1px solid; padding-left: 4px; padding-bottom: 4px; border-left: 1px solid; padding-top: 4px; border-bottom: 1px solid; background-color: #ebebeb"><font face="Courier New"><font color="#0000ff">svnadmin create</font> --fs-type fsfs ProjTest</font></div>
<h4><font face="Courier New">b.用TortoiseSVN创建版本库</font></h4>
<p><font face="Courier New">在E:\SvnRepository目录下建立文件夹，命名为ProjTest，进入此文件夹，右键选择TortoiseSVN &rarr; 在此创建版本库...</font></p>
<h4><font face="Courier New">3.本机模式使用此版本库</font></h4>
<p><font face="Courier New">svn路径为：file:///E:/SvnRepository/ProjTest<br />
本机模式，默认是允许匿名用户读写的。</font></p>
<h4><font face="Courier New">4.网络使用此版本库</font></h4>
<p><font face="Courier New">在Subversion中包含一个轻型的独立服务器svnserve，可以注册为Windows服务，具体方法如下：</font></p>
<h4><font face="Courier New">a.安装svn服务:</font></h4>
<div style="border-right: 1px solid; padding-right: 4px; border-top: 1px solid; padding-left: 4px; padding-bottom: 4px; border-left: 1px solid; padding-top: 4px; border-bottom: 1px solid; background-color: #ebebeb"><font face="Courier New" style="font-size: 10pt"><font color="#ff00ff">@echo off</font><br />
<font color="#0000ff">set</font> BinPath=<font color="#008080">\&quot;D:\Program Files\Subversion\bin\svnserve.exe\&quot;</font><br />
<font color="#0000ff">set</font> RepositoryRootPath=<font color="#008080">&quot;E:\SvnRepository&quot;</font><br />
<font color="#0000ff">set</font> DisplayName=<font color="#008080">&quot;Subversion Service&quot;</font><br />
<br />
<font color="#0000ff">sc create</font> svnserve binPath= <font color="#008080">&quot;%BinPath% --service --root %RepositoryRootPath%&quot;</font> DisplayName= %DisplayName% depend= tcpip start= auto<br />
<font color="#0000ff">sc description</font> svnserve <font color="#008080">&quot;版本库(基于Subversion)&quot;</font><br />
<font color="#0000ff">net start</font> %DisplayName%</font></div>
<h4><font face="Courier New">b.启动服务:</font></h4>
<div style="border-right: 1px solid; padding-right: 4px; border-top: 1px solid; padding-left: 4px; padding-bottom: 4px; border-left: 1px solid; padding-top: 4px; border-bottom: 1px solid; background-color: #ebebeb"><font face="Courier New"><font color="#ff00ff">@echo off</font><br />
<font color="#0000ff">net start</font> <font color="#008080">&quot;Subversion Service&quot;</font></font></div>
<h4><font face="Courier New">c.停止服务:</font></h4>
<div style="border-right: 1px solid; padding-right: 4px; border-top: 1px solid; padding-left: 4px; padding-bottom: 4px; border-left: 1px solid; padding-top: 4px; border-bottom: 1px solid; background-color: #ebebeb"><font face="Courier New"><font color="#ff00ff">@echo off</font><br />
<font color="#0000ff">net stop</font> <font color="#008080">&quot;Subversion Service&quot;</font></font></div>
<h4><font face="Courier New">d.卸载服务：</font></h4>
<div style="border-right: 1px solid; padding-right: 4px; border-top: 1px solid; padding-left: 4px; padding-bottom: 4px; border-left: 1px solid; padding-top: 4px; border-bottom: 1px solid; background-color: #ebebeb"><font face="Courier New"><font color="#ff00ff">@echo off</font><br />
<font color="#0000ff">net stop</font> <font color="#008080">&quot;Subversion Service&quot;</font><br />
<font color="#0000ff">sc delete</font> svnserve<br />
</font></div>
<p>svn路径为：<br />
svn://localhost/ProjTest</p>
<h4><font face="Courier New">e.用户与权限设置</font></h4>
<p><font face="Courier New"><b>e.1 修改版本库目录的conf/svnserve.conf文件</b><br />
<br />
</font></p>
<div style="border-right: 1px solid; padding-right: 4px; border-top: 1px solid; padding-left: 4px; padding-bottom: 4px; border-left: 1px solid; padding-top: 4px; border-bottom: 1px solid; background-color: #ebebeb"><span style="background-color: #ffcc66">[general]</span><br />
<font color="#008000">#none禁止访问;read可读;write可读写<br />
#匿名，禁止访问</font><br />
anon-access = none<br />
<br />
<font color="#008000">#验证通过的用户，可读写</font><br />
auth-access = write<br />
<br />
<font color="#008000">#指定用户名，密码存储在本目录下的passwd中</font><br />
password-db = passwd<br />
&nbsp;</div>
<p><b>e.2 在passwd文件中添加用户名和密码，格式如下</b></p>
<div style="border-right: 1px solid; padding-right: 4px; border-top: 1px solid; padding-left: 4px; padding-bottom: 4px; border-left: 1px solid; padding-top: 4px; border-bottom: 1px solid; background-color: #ebebeb"><span style="background-color: #ffcc66">[users]</span><br />
user1 = password1</div>
<p>&nbsp;</p>]]></description>
		</item>
		
			<item>
			<link>http://www.qingfengju.com/article.asp?id=224</link>
			<title><![CDATA[用命令行下的FTP实现自动下载&amp;上传文件,用宏定制Visual studio]]></title>
			<author>dgx_lsyd3@163.com(淡月清风)</author>
			<category><![CDATA[Win32&amp;C++]]></category>
			<pubDate>Sat,05 Jun 2010 22:40:24 +0800</pubDate>
			<guid>http://www.qingfengju.com/default.asp?id=224</guid>
		<description><![CDATA[<p><font face="Courier New"><b>1.使用方法</b><br />
Windows下的FTP命令支持一个参数-s，通过它即可实现命令行下的FTP，格式如下：<br />
<font color="#ff0000">ftp -s:ftpCmd.txt</font><br />
这里的ftpCmd.txt中是一系列的FTP子系统命令，格式为：<br />
<font color="#ff0000">open &lt;ftp服务器的地址&gt;<br />
&lt;用户名&gt;<br />
&lt;密码&gt;<br />
&lt;put或者get&gt;<br />
quit</font><br />
<br />
<b>2.为什么要这样用FTP<br />
</b><br />
有两个原因：<br />
a.著名的CuteFTP和FlashXP竟不能正常列出UNIX FTP下的某些文件/目录，而ftp命令可以；<br />
b.可定制IDE实现，保存源代码时自动FTP到目标机器。<br />
<br />
<b>3.附注 - 用&ldquo;宏&rdquo;来定制Visual Studio<br />
</b><br />
a.Visual Studio.Net 2003的中当前生效的&ldquo;宏&rdquo;路径保存在<br />
HKCU\Software\Microsoft\VisualStudio\7.1\vsmacros\RecordingProject7\Path下。<br />
<br />
b.在&ldquo;宏&rdquo;程序中，可以使用多数.NET Framework类<br />
<br />
c.在2.b中提到的方案具体实现方法<br />
<br />
&middot;在DocumentEvents_DocumentSaved事件(当前文件保存完成时发生)中编写代码<br />
<br />
&middot;Document.FullName是当前文件的完整路径<br />
<br />
&middot;在&ldquo;输出&rdquo;窗口输出字符串<br />
<font color="#008000">'------输出字符串---------------------------<br />
</font><font color="#0000ff">Dim</font> <span style="color: #000000">win </span><font color="#0000ff">As</font> <span style="color: #000000">Window = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput)</span><br />
<font color="#0000ff">Dim</font> <span style="color: #000000">OutputWnd As OutputWindow = win.Object<br />
</span><font color="#0000ff">Dim</font> <span style="color: #000000">out </span><font color="#0000ff">As</font> <span style="color: #000000">OutputWindowPane<br />
</span><font color="#0000ff">If</font> <span style="color: #000000">(OutputWnd.ActivePane </span><font color="#0000ff">Is</font> <span style="color: #000000">System.DBNull.Value</span> <font color="#0000ff">Or</font> <span style="color: #000000">OutputWnd.ActivePane </span><font color="#0000ff">Is Nothing</font><span style="color: #000000">)</span> <font color="#0000ff">Then</font><br />
<span style="color: #000000">out = OutputWnd.OutputWindowPanes.Add(</span><span style="color: #008080">&quot;AutoFtpMacroPane&quot;</span><span style="color: #000000">)</span><br />
<font color="#0000ff">Else</font><br />
<span style="color: #000000">out = OutputWnd.ActivePane</span><br />
<font color="#0000ff">End If</font><br />
<span style="color: #000000">out.Activate()<br />
out.Clear()<br />
out.OutputString(DateTime.Now &amp; </span><font color="#008080">&quot;.&quot;</font> <span style="color: #000000">&amp; DateTime.Now.Millisecond &amp; </span><font color="#008080">&quot; &quot;</font> <span style="color: #000000">&amp;</span> <span style="color: #000000">Document.FullName &amp;</span> <font color="#008080">&quot;已经保存。&quot;</font> <span style="color: #000000">&amp; vbCrLf)</span><br />
<br />
&middot;生成ftpCmd.txt<br />
<font color="#008000">'-------生成FTP批处理命令文件--------------------------<br />
</font><font color="#0000ff">Imports</font> <span style="color: #000000">System<br />
</span><font color="#0000ff">Imports</font> <span style="color: #000000">System.IO<br />
</span><br />
<font color="#0000ff">Dim</font> <span style="color: #000000">FtpCmd </span><font color="#0000ff">As</font> <span style="color: #000000">String = </span><font color="#008080">&quot;C:\WINDOWS\Temp\ftp_cmd.txt&quot;</font><br />
<font color="#0000ff">Dim</font> <span style="color: #000000">sw </span><font color="#0000ff">As</font> <span style="color: #000000">StreamWriter =</span> <font color="#0000ff">New</font> <span style="color: #000000">StreamWriter(FtpCmd)<br />
</span><span style="color: #000000">sw.WriteLine(</span><font color="#008080">&quot;open</font><font color="#008080"> 192.168.1.xxx&quot;</font><span style="color: #000000">)</span><br />
<span style="color: #000000">sw.WriteLine(</span><font color="#008080">&quot;myname&quot;<span style="color: #000000">)</span></font><br />
<span style="color: #000000">sw.WriteLine(</span><font color="#008080">&quot;mypass&quot;<span style="color: #000000">)</span></font><br />
<span style="color: #000000">sw.WriteLine(</span><font color="#008080">&quot;put &quot;&quot;x:\a.cpp&quot;&quot; &quot;&quot;/a.cpp&quot;&quot;&quot;<span style="color: #000000">)</span></font><br />
<span style="color: #000000">sw.WriteLine(</span><font color="#008080">&quot;quit&quot;<span style="color: #000000">)</span></font><br />
<span style="color: #000000">sw.Close()</span><br />
&middot;执行ftp -s:ftpCmd.txt<br />
Shell(<font color="#008080">&quot;ftp -s:C:\WINDOWS\Temp\ftp_cmd.txt&quot;</font>, AppWinStyle.MinimizedNoFocus, True, 1500)</font></p>]]></description>
		</item>
		
</channel>
</rss>
