﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-努力创造未来！-随笔分类-unix/windows  C 程序设计</title><link>http://www.blogjava.net/pdw2009/category/25919.html</link><description>J2EE相关应用技术日志</description><language>zh-cn</language><lastBuildDate>Sat, 15 Mar 2008 09:46:19 GMT</lastBuildDate><pubDate>Sat, 15 Mar 2008 09:46:19 GMT</pubDate><ttl>60</ttl><item><title>Mysql C 带事务管理的添删查改</title><link>http://www.blogjava.net/pdw2009/archive/2008/03/15/186509.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Sat, 15 Mar 2008 09:33:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2008/03/15/186509.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/186509.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2008/03/15/186509.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/186509.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/186509.html</trackback:ping><description><![CDATA[今天写的例子,只贴代码,不使用文字说明.<br />
mysqltool.h<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">stdio.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">stdlib.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">winsock.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">mysql.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<br />
<br />
</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;xinsert(MYSQL&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">mysql,</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">strsql)<br />
{&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;t;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MYSQL_RES&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">res;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000">=</span><span style="color: #000000">mysql_real_query(mysql,strsql,(unsigned&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">)strlen(strsql));<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(t){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Error&nbsp;id=%d&nbsp;&nbsp;Error:&nbsp;%s\n</span><span style="color: #000000">"</span><span style="color: #000000">,mysql_errno(mysql),mysql_error(mysql));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;mysql_errno(mysql);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff">else</span><span style="color: #000000">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res</span><span style="color: #000000">=</span><span style="color: #000000">mysql_store_result(mysql);&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">插入行数=%d\n</span><span style="color: #000000">"</span><span style="color: #000000">,mysql_affected_rows(mysql));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql_free_result(res);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />
<br />
}<br />
<br />
</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;xupate(MYSQL&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">mysql,</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">strsql)<br />
{&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;t;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MYSQL_RES&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">res;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000">=</span><span style="color: #000000">mysql_real_query(mysql,strsql,(unsigned&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">)strlen(strsql));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(t){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Error&nbsp;id=%d&nbsp;&nbsp;Error:&nbsp;%s\n</span><span style="color: #000000">"</span><span style="color: #000000">,mysql_errno(mysql),mysql_error(mysql));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;mysql_errno(mysql);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff">else</span><span style="color: #000000">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res</span><span style="color: #000000">=</span><span style="color: #000000">mysql_store_result(mysql);&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">更新行数=%d\n</span><span style="color: #000000">"</span><span style="color: #000000">,mysql_affected_rows(mysql));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql_free_result(res);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />
}<br />
<br />
</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;xdelete(MYSQL&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">mysql,</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">strsql)<br />
{&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;t;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MYSQL_RES&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">res;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000">=</span><span style="color: #000000">mysql_real_query(mysql,strsql,(unsigned&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">)strlen(strsql));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(t){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Error&nbsp;id=%d&nbsp;&nbsp;Error:&nbsp;%s\n</span><span style="color: #000000">"</span><span style="color: #000000">,mysql_errno(mysql),mysql_error(mysql));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;mysql_errno(mysql);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff">else</span><span style="color: #000000">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res</span><span style="color: #000000">=</span><span style="color: #000000">mysql_store_result(mysql);&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">删行数=%d\n</span><span style="color: #000000">"</span><span style="color: #000000">,mysql_affected_rows(mysql));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql_free_result(res);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />
<br />
}<br />
</span></div>
<br />
one.c 代码如下:<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">stdlib.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">winsock.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">mysql.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">stdio.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">mysqltool.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<br />
</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MYSQL&nbsp;mysql;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">mysql连接&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MYSQL_RES&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">res;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">这个结构代表返回行的一个查询结果集&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MYSQL_ROW&nbsp;row;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">一个行数据的类型安全(type-safe)的表示</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">query;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">查询语句&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;t,r;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql_init(</span><span style="color: #000000">&amp;</span><span style="color: #000000">mysql);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">mysql_real_connect(</span><span style="color: #000000">&amp;</span><span style="color: #000000">mysql,</span><span style="color: #000000">"</span><span style="color: #000000">localhost</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">lottobar</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">123456</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">lottobar</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">3306</span><span style="color: #000000">,NULL,</span><span style="color: #000000">0</span><span style="color: #000000">))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Error&nbsp;connecting&nbsp;to&nbsp;database:&nbsp;%s\n</span><span style="color: #000000">"</span><span style="color: #000000">,mysql_error(</span><span style="color: #000000">&amp;</span><span style="color: #000000">mysql));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">Connected<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">SET&nbsp;CHARACTER&nbsp;SET&nbsp;GBK</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">设置编码&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000">=</span><span style="color: #000000">mysql_real_query(</span><span style="color: #000000">&amp;</span><span style="color: #000000">mysql,query,(unsigned&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">)strlen(query));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(t)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">编码设置失败\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;select&nbsp;*&nbsp;from&nbsp;demo&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000">=</span><span style="color: #000000">mysql_real_query(</span><span style="color: #000000">&amp;</span><span style="color: #000000">mysql,query,(unsigned&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">)strlen(query));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(t)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">执行查询时出现异常:&nbsp;%s</span><span style="color: #000000">"</span><span style="color: #000000">,mysql_error(</span><span style="color: #000000">&amp;</span><span style="color: #000000">mysql));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">[%s]&nbsp;构建成功&nbsp;\n</span><span style="color: #000000">"</span><span style="color: #000000">,query);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res</span><span style="color: #000000">=</span><span style="color: #000000">mysql_store_result(</span><span style="color: #000000">&amp;</span><span style="color: #000000">mysql);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(row</span><span style="color: #000000">=</span><span style="color: #000000">mysql_fetch_row(res))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(t</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;t</span><span style="color: #000000">&lt;</span><span style="color: #000000">mysql_num_fields(res);t</span><span style="color: #000000">++</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">%s\t</span><span style="color: #000000">"</span><span style="color: #000000">,row[t]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql_free_result(res);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000">=</span><span style="color: #000000">mysql_real_query(</span><span style="color: #000000">&amp;</span><span style="color: #000000">mysql,</span><span style="color: #000000">"</span><span style="color: #000000">SET&nbsp;AUTOCOMMIT&nbsp;=0</span><span style="color: #000000">"</span><span style="color: #000000">,(unsigned&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">)strlen(</span><span style="color: #000000">"</span><span style="color: #000000">SET&nbsp;AUTOCOMMIT&nbsp;=0</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(t){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">启用手工事务失败\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff">else</span><span style="color: #000000">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">启用手工事务成功\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000">=</span><span style="color: #000000">mysql_real_query(</span><span style="color: #000000">&amp;</span><span style="color: #000000">mysql,</span><span style="color: #000000">"</span><span style="color: #000000">Begin&nbsp;;</span><span style="color: #000000">"</span><span style="color: #000000">,(unsigned&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">)strlen(</span><span style="color: #000000">"</span><span style="color: #000000">Begin&nbsp;;</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">insert&nbsp;into&nbsp;demo(name,age)values('老裴','89')</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;inset_result</span><span style="color: #000000">=</span><span style="color: #000000">xinsert(</span><span style="color: #000000">&amp;</span><span style="color: #000000">mysql,query);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">delete&nbsp;&nbsp;from&nbsp;demo&nbsp;&nbsp;where&nbsp;name='老裴'</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;delete_result</span><span style="color: #000000">=</span><span style="color: #000000">xdelete(</span><span style="color: #000000">&amp;</span><span style="color: #000000">mysql,query);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">update&nbsp;demo&nbsp;set&nbsp;name='裴屋村'&nbsp;where&nbsp;name='ccd'&nbsp;and&nbsp;inc_id=13</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;update_result</span><span style="color: #000000">=</span><span style="color: #000000">xupate(</span><span style="color: #000000">&amp;</span><span style="color: #000000">mysql,query);&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">insert&nbsp;into&nbsp;demo(inc_id,name,age)values(16,'老裴','89')</span><span style="color: #000000">"</span><span style="color: #000000">;</span><span style="color: #008000">//</span><span style="color: #008000">执行会出现异常的语句&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;fail_result</span><span style="color: #000000">=</span><span style="color: #000000">xinsert(</span><span style="color: #000000">&amp;</span><span style="color: #000000">mysql,query);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(inset_result</span><span style="color: #000000">==</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;delete_result</span><span style="color: #000000">==</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;update_result</span><span style="color: #000000">==</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;fail_result</span><span style="color: #000000">==</span><span style="color: #000000">0</span><span style="color: #000000">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">事务提交\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000">=</span><span style="color: #000000">mysql_real_query(</span><span style="color: #000000">&amp;</span><span style="color: #000000">mysql,</span><span style="color: #000000">"</span><span style="color: #000000">COMMIT;</span><span style="color: #000000">"</span><span style="color: #000000">,(unsigned&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">)strlen(</span><span style="color: #000000">"</span><span style="color: #000000">COMMIT;</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff">else</span><span style="color: #000000">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">事务回滚\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000">=</span><span style="color: #000000">mysql_real_query(</span><span style="color: #000000">&amp;</span><span style="color: #000000">mysql,</span><span style="color: #000000">"</span><span style="color: #000000">ROLLBACK;</span><span style="color: #000000">"</span><span style="color: #000000">,(unsigned&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">)strlen(</span><span style="color: #000000">"</span><span style="color: #000000">ROLLBACK;</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;&nbsp;<br />
}<br />
</span></div>
<br />
<img src ="http://www.blogjava.net/pdw2009/aggbug/186509.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2008-03-15 17:33 <a href="http://www.blogjava.net/pdw2009/archive/2008/03/15/186509.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Windows平台下Mysql C程序设计</title><link>http://www.blogjava.net/pdw2009/archive/2008/03/09/184869.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Sun, 09 Mar 2008 10:26:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2008/03/09/184869.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/184869.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2008/03/09/184869.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/184869.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/184869.html</trackback:ping><description><![CDATA[&nbsp;
<p style="text-align: center" align="center"><strong><span style="font-size: 14pt">Windows</span></strong><strong><span style="font-size: 14pt; font-family: 宋体">平台下</span></strong><strong><span style="font-size: 14pt">Mysql C</span></strong><strong><span style="font-size: 14pt; font-family: 宋体">程序设计</span></strong></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">一、<span style="font-family: 宋体">哆嗦一下</span></p>
<p style="margin-left: 21pt; text-indent: 26.25pt"><span style="font-family: 宋体">从打开始学编程以来，接触的第一门真正的编程语言是</span>C<span style="font-family: 宋体">（</span>foxbase<span style="font-family: 宋体">不算），想当年俺自学完浩强叔那本《</span>C<span style="font-family: 宋体">语言程序设计》时，老师才开始教</span>pascal<span style="font-family: 宋体">。自毕业以来一直没有机会写过有应用价值的</span>C<span style="font-family: 宋体">程序，从</span>Delphi<span style="font-family: 宋体">做到</span>J2EE<span style="font-family: 宋体">。打算从现在开始利用业余时间学习</span>Pro*C<span style="font-family: 宋体">，</span>Mysql C<span style="font-family: 宋体">，也不知为啥对</span>C<span style="font-family: 宋体">念念不忘，却没机用</span>C<span style="font-family: 宋体">来写程序。</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">二、<span style="font-family: 宋体">开发环境</span></p>
<p style="margin-left: 39pt; text-indent: -18pt; tab-stops: list 39.0pt">1、&nbsp;windowsXP</p>
<p style="margin-left: 39pt; text-indent: -18pt; tab-stops: list 39.0pt">2、&nbsp;mysql 5.0.22</p>
<p style="margin-left: 39pt; text-indent: -18pt; tab-stops: list 39.0pt">3、&nbsp;Dev-C++ 4.9.9.2</p>
<p style="margin-left: 39pt; text-indent: -18pt; tab-stops: list 39.0pt">4、&nbsp;Mysql C for Dev-Cpp (MySQL.DevPak) </p>
<p style="margin-left: 63pt; text-indent: -21pt; tab-stops: list 63.0pt">a)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">用过</span>Dev-C++<span style="font-family: 宋体">的人都应该知道</span>devpak<span style="font-family: 宋体">吧我就不详说，如果你用的是</span>C++<span style="font-family: 宋体">，请下载</span>(mysqlpp-2.3.2-gcc3.4.2-1due.DevPak)</p>
<p style="margin-left: 63pt; text-indent: -21pt; tab-stops: list 63.0pt">b)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>MySQL.DevPak <span style="font-family: 宋体">下载地址：</span> http://downloads.sourceforge.net/dev-cpp/MySQL.DevPak</p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">三、<span style="font-family: 宋体">安装及配置</span></p>
<p style="margin-left: 21pt">1<span style="font-family: 宋体">、双击</span>MySQL.DevPak<span style="font-family: 宋体">文件，按步骤把这开发包安装完成。直到</span>package Mangaer <span style="font-family: 宋体">出现&#8220;</span>MySQL<span style="font-family: 宋体">&#8221;即可。</span></p>
<p style="margin-left: 21pt">2<span style="font-family: 宋体">、单击&#8220;工具&#8221;</span>-&gt;<span style="font-family: 宋体">&#8220;编译选项&#8221;</span>-&gt;<span style="font-family: 宋体">&#8220;编译器&#8221;</span>-&gt;<span style="font-family: 宋体">&#8220;在连接器命令行中加下以下命令&#8221;（选择），在下面的文本框中添加</span>-lmysql&nbsp;<span style="font-family: 宋体">。</span></p>
<p style="margin-left: 21pt">3<span style="font-family: 宋体">、在</span>Dev-C++<span style="font-family: 宋体">中添加</span>mysql<span style="font-family: 宋体">的</span>lib<span style="font-family: 宋体">和</span>include <span style="font-family: 宋体">文件，具体方法</span>:</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">&#8220;工具&#8221;</span>-&gt;<span style="font-family: 宋体">&#8220;编译选项&#8221;</span>-&gt;<span style="font-family: 宋体">&#8220;编译器&#8221;</span>-&gt;<span style="font-family: 宋体">&#8220;目录&#8221;</span> <span style="font-family: 宋体">中添加</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">四、<span style="font-family: 宋体">例程代码</span></p>
<p style="margin-left: 21pt">#include &lt;stdlib.h&gt;</p>
<p style="margin-left: 21pt">#include &lt;winsock.h&gt;</p>
<p style="margin-left: 21pt">#include &lt;mysql.h&gt;</p>
<p style="margin-left: 21pt">#include &lt;stdio.h&gt;</p>
<p style="margin-left: 21pt">/*</p>
<p style="margin-left: 21pt">&nbsp;Name:&nbsp;<span style="font-family: 宋体">测试例子</span></p>
<p style="margin-left: 21pt">&nbsp;Copyright:&nbsp;http://www.blogjava.net/pdw2009&nbsp;&nbsp; </p>
<p style="margin-left: 21pt">&nbsp;Author:&nbsp;<span style="font-family: 宋体">裴德万</span></p>
<p style="margin-left: 21pt">&nbsp;Date: 09-03-08 18:14</p>
<p style="margin-left: 21pt">&nbsp;Description: </p>
<p style="margin-left: 21pt">*/</p>
<p style="margin-left: 21pt">int main()</p>
<p style="margin-left: 21pt">{</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MYSQL mysql;&nbsp;&nbsp;&nbsp;&nbsp; //mysql<span style="font-family: 宋体">连接</span></p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MYSQL_RES *res; //<span style="font-family: 宋体">这个结构代表返回行的一个查询结果集</span></p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MYSQL_ROW row; //<span style="font-family: 宋体">一个行数据的类型安全</span>(type-safe)<span style="font-family: 宋体">的表示</span></p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char *query;&nbsp;//<span style="font-family: 宋体">查询语句</span></p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int t,r;</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql_init(&amp;mysql);</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!mysql_real_connect(&amp;mysql,"localhost", "lottobar", "123456", "lottobar",3306,NULL,0))</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "Error connecting to database: %s"n",mysql_error(&amp;mysql));</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;else </p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("Connected..."n");</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query="SET CHARACTER SET GBK"; //<span style="font-family: 宋体">设置编码</span></p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t=mysql_real_query(&amp;mysql,query,(unsigned int)strlen(query));</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(t)</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("<span style="font-family: 宋体">编码设置失败</span>"n");</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query=" select * from demo ";</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t=mysql_real_query(&amp;mysql,query,(unsigned int)strlen(query));</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(t)</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("<span style="font-family: 宋体">执行查询时出现异常</span>: %s",mysql_error(&amp;mysql));</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("[%s] <span style="font-family: 宋体">构建成功</span> "n",query);</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; res=mysql_store_result(&amp;mysql);</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(row=mysql_fetch_row(res))</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(t=0;t&lt;mysql_num_fields(res);t++)</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%s"t",row[t]);</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(""n");</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql_free_result(res);</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sleep(1);</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;&nbsp;</p>
<p style="margin-left: 21pt">}</p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">五、<span style="font-family: 宋体">注意事项</span></p>
<p style="margin-left: 21pt">Windows C<span style="font-family: 宋体">程序设只要涉及网络的都应该加上这两个文件，否则肯定出错</span></p>
<p style="margin-left: 21pt">#include &lt;stdlib.h&gt;</p>
<p style="margin-left: 21pt">#include &lt;winsock.h&gt;</p>
<p style="margin-left: 21pt">Mysql C<span style="font-family: 宋体">乱码的解决方式</span></p>
<p style="margin-left: 21pt">query="SET CHARACTER SET GBK"; //<span style="font-family: 宋体">设置编码</span></p>
<p style="margin-left: 21pt">t=mysql_real_query(&amp;mysql,query,(unsigned int)strlen(query));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">如果你有问题可以到</span><a href="http://www.blogjava.net/pdw2009">www.blogjava.net/pdw2009</a><span style="font-family: 宋体">去交流</span></p>
<br />
<br />
该文属作者原创,转载请注明出: http://<a href="http://www.blogjava.net/pdw2009">www.blogjava.net/pdw2009</a>
<img src ="http://www.blogjava.net/pdw2009/aggbug/184869.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2008-03-09 18:26 <a href="http://www.blogjava.net/pdw2009/archive/2008/03/09/184869.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>pro*c动态SQL技术</title><link>http://www.blogjava.net/pdw2009/archive/2007/09/28/149017.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Fri, 28 Sep 2007 03:09:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2007/09/28/149017.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/149017.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2007/09/28/149017.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/149017.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/149017.html</trackback:ping><description><![CDATA[<p>共有4种构方法构造动态SQL语句：<br />
1、方法一：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 仅适用于非SELECT语句，且语句中不包含输入宿主变量。格式如下<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXEC SQL EXECUTE&nbsp; IMMEDIATE&nbsp; :host_string&nbsp; 或<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXEC SQL EXECUTE&nbsp; IMMEDIATE&nbsp; "UPDATE XX SET NAME=yyyy&nbsp; HERE ID=1"<br />
<br />
2、方法二：<br />
　　也只适用于非ＳＥＬＥＣＴ语句，ＳＱＬ语句可包含虚拟输入宿主变量和指示器变量，但它们的个数和数据类型在预编译时必须是可知的。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 处理分三步：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A、构造一个动态SQL语句。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B、用PREPARE 语句来分析和命名该动态SQL语句<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C、用EXECUTE 来执行<br />
&nbsp;&nbsp;&nbsp;&nbsp; EXEC SQL PREPARE 用于分析一个动态SQL，如<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strcpy(sql_stmt,"DELETE FROM EMP&nbsp; WHERE JOB=:v");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXEC SQL PREPARE stmt FROM :sql_stmt;<br />
&nbsp;&nbsp;&nbsp; EXECUTE 语句格式：<br />
&nbsp;&nbsp;&nbsp;&nbsp; EXEＣ　ＳＱＬ　ＦＯＲ　&lt;行数&gt; EXECUTE&nbsp; &lt;动态语句&gt; USING&nbsp; &lt;参数&gt;<br />
&nbsp;&nbsp;&nbsp; EXEC SQL EXECUTE stmt USING :job;<br />
<br />
3、方法三：<br />
&nbsp;&nbsp;&nbsp;&nbsp; 方法三只适用于SELECT语句，语句中包含选择表项个数，和虚拟输入宿主变量个数在预编译时都是已知的，但是数据库的表、列名可能运行时指定。步骤如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp; 1、定义动态脚本。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 2、分析动态脚本。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 3、定义游标，游标的语句就是动态分析的名。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 代码例子:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strcpy(sql_stmt,"SELECT&nbsp;SID,ENAME FROM EMP&nbsp; WHERE JOB=:v");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXEC SQL PREPARE stmt FROM :sql_stmt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXEC SQL DECLARE cur FOR&nbsp; stmt&nbsp;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 然后遍历游标:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">for</span><span style="color: #000000">(;;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;SQL&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;:n&nbsp;FETCH&nbsp;stud_cur&nbsp;&nbsp;INTO&nbsp;:stud_id,:stud_age,:stud_n<br />
ame,:stud_addr;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rows</span><span style="color: #000000">=</span><span style="color: #000000">sqlca.sqlerrd[</span><span style="color: #000000">2</span><span style="color: #000000">];<br />
printf(</span><span style="color: #000000">"</span><span style="color: #000000">rows=%d\n</span><span style="color: #000000">"</span><span style="color: #000000">,rows);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i;<br />
</span><span style="color: #0000ff">if</span><span style="color: #000000">(sqlca.sqlcode</span><span style="color: #000000">&lt;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;{<br />
printf(</span><span style="color: #000000">"</span><span style="color: #000000">ora&nbsp;err:%d</span><span style="color: #000000">"</span><span style="color: #000000">,sqlca.sqlcode);<br />
</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
}<br />
rows</span><span style="color: #000000">=</span><span style="color: #000000">sqlca.sqlerrd[</span><span style="color: #000000">2</span><span style="color: #000000">]</span><span style="color: #000000">-</span><span style="color: #000000">n</span><span style="color: #000000">*</span><span style="color: #000000">j;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">rows;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">%d--%d--%s--%s\n</span><span style="color: #000000">"</span><span style="color: #000000">,stud_id[i],stud_age[i],stud_name<br />
[i].arr,stud_addr[i].arr);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="color: #000000">++</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">currsor&nbsp;%d&nbsp;times\n</span><span style="color: #000000">"</span><span style="color: #000000">,j);<br />
</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;((sqlca.sqlcode&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1403</span><span style="color: #000000">)&nbsp;)&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<p>上面遍因游标是一次取N条记录的，因为stud_id等是数组，n为数组长度<br />
一个完整的动态游标例子<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">stdio.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">string</span><span style="color: #000000">.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">stdlib.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
EXEC&nbsp;SQL&nbsp;include&nbsp;sqlca;<br />
#ifdef&nbsp;TRUE<br />
</span><span style="color: #0000ff">#undef</span><span style="color: #000000">&nbsp;TRUE</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">#endif</span><span style="color: #000000"><br />
<br />
</span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;TRUE&nbsp;1</span><span style="color: #000000"><br />
<br />
EXEC&nbsp;ORACLE&nbsp;OPTION&nbsp;(RELEASE_CURSOR&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;YES);<br />
EXEC&nbsp;SQL&nbsp;BEGIN&nbsp;DECLARE&nbsp;SECTION;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VARCHAR&nbsp;username[</span><span style="color: #000000">20</span><span style="color: #000000">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VARCHAR&nbsp;password[</span><span style="color: #000000">20</span><span style="color: #000000">];<br />
<br />
EXEC&nbsp;SQL&nbsp;END&nbsp;DECLARE&nbsp;SECTION;<br />
<br />
<br />
</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;sql_error()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;SQL&nbsp;WHENEVER&nbsp;SQLERROR&nbsp;CONTINUE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">\n&nbsp;Oracle&nbsp;error&nbsp;detected:\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">\n%.70s\n</span><span style="color: #000000">"</span><span style="color: #000000">,sqlca.sqlerrm.sqlerrmc);<br />
&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;SQL&nbsp;ROLLBACK&nbsp;RELEASE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;exit(</span><span style="color: #000000">1</span><span style="color: #000000">);<br />
}<br />
</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;dyna_cursor()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;SQL&nbsp;BEGIN&nbsp;DECLARE&nbsp;SECTION;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">sql_str;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;stud_id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;stud_age;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VARCHAR&nbsp;stud_name[</span><span style="color: #000000">20</span><span style="color: #000000">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VARCHAR&nbsp;stud_addr[</span><span style="color: #000000">60</span><span style="color: #000000">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;vage;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;SQL&nbsp;END&nbsp;&nbsp;&nbsp;DECLARE&nbsp;SECTION;<br />
&nbsp;&nbsp;&nbsp;&nbsp;sql_str</span><span style="color: #000000">=</span><span style="color: #000000">(</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">)malloc(</span><span style="color: #000000">400</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;vage</span><span style="color: #000000">=</span><span style="color: #000000">3</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;strcpy(sql_str,</span><span style="color: #000000">"</span><span style="color: #000000">SELECT&nbsp;STUD_ID,STUD_NAME&nbsp;FROM&nbsp;PROC_STUD&nbsp;WHERE&nbsp;STUD_A</span><span style="color: #000000"><br />
</span><span style="color: #000000">GE</span><span style="color: #000000">=</span><span style="color: #000000">:v1</span><span style="color: #000000">"</span><span style="color: #000000">);</span><span style="color: #000000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;SQL&nbsp;PREPARE&nbsp;S&nbsp;FROM&nbsp;:sql_str;<br />
&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;SQL&nbsp;DECLARE&nbsp;C&nbsp;CURSOR&nbsp;&nbsp;FOR&nbsp;S;<br />
&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">please&nbsp;input&nbsp;age&nbsp;:\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">&amp;</span><span style="color: #000000">vage);<br />
&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;SQL&nbsp;OPEN&nbsp;C&nbsp;USING&nbsp;:vage;<br />
&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;SQL&nbsp;WHENEVER&nbsp;NOT&nbsp;FOUND&nbsp;GOTO&nbsp;notfound;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(TRUE)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;SQL&nbsp;FETCH&nbsp;C&nbsp;INTO&nbsp;:stud_id,:stud_name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">stud_name.arr[stud_name.len]='\0';</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">stud_name.len=strlen(stud_name.arr);</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">%d\t%s\n</span><span style="color: #000000">"</span><span style="color: #000000">,stud_id,stud_name.arr);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;notfound:<br />
&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">\nQuery&nbsp;Returned&nbsp;%d&nbsp;row&nbsp;%s\n</span><span style="color: #000000">"</span><span style="color: #000000">,sqlca.sqlerrd[</span><span style="color: #000000">2</span><span style="color: #000000">],sql_str);<br />
&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;SQL&nbsp;CLOSE&nbsp;C;<br />
&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;SQL&nbsp;COMMIT&nbsp;RELEASE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">Have&nbsp;a&nbsp;good&nbsp;day!\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;exit(</span><span style="color: #000000">0</span><span style="color: #000000">);<br />
&nbsp;sqlerror:<br />
&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">%d&nbsp;%.*s\n</span><span style="color: #000000">"</span><span style="color: #000000">,sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);<br />
&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;SQL&nbsp;WHENEVER&nbsp;SQLERROR&nbsp;CONTINUE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;SQL&nbsp;CLOSE&nbsp;C;<br />
&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;SQL&nbsp;ROLLBACK&nbsp;RELEASE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;exit(</span><span style="color: #000000">1</span><span style="color: #000000">);<br />
}<br />
<br />
<br />
main()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strcpy(username.arr,</span><span style="color: #000000">"</span><span style="color: #000000">gdnum_true</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strcpy(password.arr,</span><span style="color: #000000">"</span><span style="color: #000000">gdnumtrue_10</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username.len</span><span style="color: #000000">=</span><span style="color: #000000">strlen(username.arr);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;password.len</span><span style="color: #000000">=</span><span style="color: #000000">strlen(password.arr);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;SQL&nbsp;CONNECT&nbsp;:username&nbsp;IDENTIFIED&nbsp;BY&nbsp;:password;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">sqlca.sqlcode=%d;\n</span><span style="color: #000000">"</span><span style="color: #000000">,sqlca.sqlcode);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">login&nbsp;user=%s\n</span><span style="color: #000000">"</span><span style="color: #000000">,username.arr);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dyna_cursor();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(</span><span style="color: #000000">0</span><span style="color: #000000">);<br />
}</span></div>
<p><br />
&nbsp;&nbsp;&nbsp;<br />
4、方法四<br />
</p>
<img src ="http://www.blogjava.net/pdw2009/aggbug/149017.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2007-09-28 11:09 <a href="http://www.blogjava.net/pdw2009/archive/2007/09/28/149017.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>proc，添、删、查、改</title><link>http://www.blogjava.net/pdw2009/archive/2007/09/23/147609.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Sun, 23 Sep 2007 11:41:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2007/09/23/147609.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/147609.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2007/09/23/147609.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/147609.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/147609.html</trackback:ping><description><![CDATA[proc 有两种方式登陆数据库<br />
1、登陆到默认数据库<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A、有IDENTIFIED BY 子句，其格式如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXEC&nbsp; SQL CONNECT&nbsp; ：username&nbsp; IDENTIFIED BY :password<br />
&nbsp;&nbsp;&nbsp;&nbsp; B、没有IDENTIFIED BY子句<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXEC SQL CONNECT :usr_pwd<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; usr_pwd由/分隔用户名和口令<br />
2、显式登陆<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXEC SQL BEGIN&nbsp; DECLARE SECTION&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VARCHARE username[20];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VARCHARE password[20];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VARCHARE dbname[20];&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXEC SQL END DECLARE SECTION&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*附值，略*/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXEC SQL DECLARE&nbsp; dbname DATABASE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*登陆远程非默认数据库*/<br />
&nbsp;&nbsp;&nbsp;&nbsp; EXEC SQL CONNECTION&nbsp; :username IDENTIFIELD BY :password&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; AT&nbsp;&nbsp;&nbsp;db_like_name&nbsp;USING :dbname;<br />
&nbsp;&nbsp;&nbsp; /*如果db_like_name 是宿主变量就不用定义*/<br />
郁闷在hpux下写好多例程，可不小心一个rm就干掉了, 没法再更新<br />
<img src ="http://www.blogjava.net/pdw2009/aggbug/147609.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2007-09-23 19:41 <a href="http://www.blogjava.net/pdw2009/archive/2007/09/23/147609.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个最简单的pro*c程序</title><link>http://www.blogjava.net/pdw2009/archive/2007/09/17/145836.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Mon, 17 Sep 2007 06:12:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2007/09/17/145836.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/145836.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2007/09/17/145836.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/145836.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/145836.html</trackback:ping><description><![CDATA[环境：hpux,oracle 9.1.2.0 ,cc<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">#include&nbsp;</span><span style="color: #808080">&lt;</span><span style="color: #000000">stdio.h</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br />
#include&nbsp;</span><span style="color: #808080">&lt;</span><span style="color: #000000">string.h</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br />
#include&nbsp;</span><span style="color: #808080">&lt;</span><span style="color: #000000">stdlib.h</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">EXEC</span><span style="color: #000000">&nbsp;SQL&nbsp;include&nbsp;sqlca;<br />
</span><span style="color: #0000ff">EXEC</span><span style="color: #000000">&nbsp;ORACLE&nbsp;</span><span style="color: #0000ff">OPTION</span><span style="color: #000000">&nbsp;(RELEASE_CURSOR&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;YES);<br />
</span><span style="color: #0000ff">EXEC</span><span style="color: #000000">&nbsp;SQL&nbsp;</span><span style="color: #0000ff">BEGIN</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">DECLARE</span><span style="color: #000000">&nbsp;SECTION;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-weight: bold; color: #000000">VARCHAR</span><span style="color: #000000">&nbsp;username</span><span style="color: #ff0000">[</span><span style="color: #ff0000">20</span><span style="color: #ff0000">]</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-weight: bold; color: #000000">VARCHAR</span><span style="color: #000000">&nbsp;password</span><span style="color: #ff0000">[</span><span style="color: #ff0000">20</span><span style="color: #ff0000">]</span><span style="color: #000000">;<br />
</span><span style="color: #0000ff">EXEC</span><span style="color: #000000">&nbsp;SQL&nbsp;</span><span style="color: #0000ff">END</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">DECLARE</span><span style="color: #000000">&nbsp;SECTION;<br />
<br />
void&nbsp;sql_error()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">EXEC</span><span style="color: #000000">&nbsp;SQL&nbsp;WHENEVER&nbsp;SQLERROR&nbsp;</span><span style="color: #0000ff">CONTINUE</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("\n&nbsp;Oracle&nbsp;error&nbsp;detected:\n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("\n</span><span style="color: #808080">%</span><span style="color: #000000">.70s\n",sqlca.sqlerrm.sqlerrmc);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">EXEC</span><span style="color: #000000">&nbsp;SQL&nbsp;</span><span style="color: #0000ff">ROLLBACK</span><span style="color: #000000">&nbsp;RELEASE;<br />
</span><span style="color: #0000ff">exit</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">);<br />
}<br />
<br />
main()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strcpy(username.arr,"gdnum_true");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strcpy(password.arr,"gdnumtrue_10");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username.</span><span style="color: #ff00ff">len</span><span style="color: #808080">=</span><span style="color: #000000">strlen(username.arr);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;password.</span><span style="color: #ff00ff">len</span><span style="color: #808080">=</span><span style="color: #000000">strlen(password.arr);<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">EXEC</span><span style="color: #000000">&nbsp;SQL&nbsp;CONNECT&nbsp;:username&nbsp;IDENTIFIED&nbsp;</span><span style="color: #0000ff">BY</span><span style="color: #000000">&nbsp;:password;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("sqlca.sqlcode</span><span style="color: #808080">=%</span><span style="color: #000000">d;\n",sqlca.sqlcode);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("login&nbsp;</span><span style="color: #ff00ff">user</span><span style="color: #808080">=%</span><span style="color: #000000">s",username.arr);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">exit</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">);<br />
}<br />
</span></div>
<br />
proc pro1.pc<br />
cc -o pro1 pro1.c -L $ORACLE_HOME/lib32 -lclntsh<br />
不作文字说明，只作例程记载
<img src ="http://www.blogjava.net/pdw2009/aggbug/145836.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2007-09-17 14:12 <a href="http://www.blogjava.net/pdw2009/archive/2007/09/17/145836.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>