ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>不卡av日日日,国产成人精品一区二区三区四区,岛国精品视频在线播放http://www.aygfsteel.com/pdw2009/category/25919.htmlJ2EE相关应用技术日å¿?/description>zh-cnSat, 15 Mar 2008 09:46:19 GMTSat, 15 Mar 2008 09:46:19 GMT60Mysql C 带事务管理的æ·Õdˆ æŸ¥æ”¹http://www.aygfsteel.com/pdw2009/archive/2008/03/15/186509.htmlæœ‰çŒ«ç›æ€¼´çš„æ—¥å­?/dc:creator>æœ‰çŒ«ç›æ€¼´çš„æ—¥å­?/author>Sat, 15 Mar 2008 09:33:00 GMThttp://www.aygfsteel.com/pdw2009/archive/2008/03/15/186509.htmlhttp://www.aygfsteel.com/pdw2009/comments/186509.htmlhttp://www.aygfsteel.com/pdw2009/archive/2008/03/15/186509.html#Feedback0http://www.aygfsteel.com/pdw2009/comments/commentRss/186509.htmlhttp://www.aygfsteel.com/pdw2009/services/trackbacks/186509.html mysqltool.h
#include <stdio.h>
#include 
<stdlib.h>
#include 
<winsock.h>
#include 
<mysql.h>


int xinsert(MYSQL *mysql,char *strsql)
{    
     
int t; 
     MYSQL_RES 
*res;
     t
=mysql_real_query(mysql,strsql,(unsigned int)strlen(strsql));

     
if(t){
           printf( 
"Error id=%d  Error: %s\n",mysql_errno(mysql),mysql_error(mysql));
           
return mysql_errno(mysql);
     }
else{
         res
=mysql_store_result(mysql);  
         printf(
"插入行数=%d\n",mysql_affected_rows(mysql));
         mysql_free_result(res);
     }

     
return 0;

}

int xupate(MYSQL *mysql,char *strsql)
{    
     
int t; 
     MYSQL_RES 
*res;
     t
=mysql_real_query(mysql,strsql,(unsigned int)strlen(strsql));
     
if(t){
           printf( 
"Error id=%d  Error: %s\n",mysql_errno(mysql),mysql_error(mysql));
           
return mysql_errno(mysql);
     }
else{
         res
=mysql_store_result(mysql);  
         printf(
"更新行数=%d\n",mysql_affected_rows(mysql));
         mysql_free_result(res);
     }
     
return 0;
}

int xdelete(MYSQL *mysql,char *strsql)
{    
     
int t; 
     MYSQL_RES 
*res;
     t
=mysql_real_query(mysql,strsql,(unsigned int)strlen(strsql));
     
if(t){
           printf( 
"Error id=%d  Error: %s\n",mysql_errno(mysql),mysql_error(mysql));
           
return mysql_errno(mysql);
     }
else{
         res
=mysql_store_result(mysql);  
         printf(
"删行�%d\n",mysql_affected_rows(mysql));
         mysql_free_result(res);
     }
     
return 0;

}

one.c 代码如下:
#include <stdlib.h>
#include 
<winsock.h>
#include 
<mysql.h>
#include 
<stdio.h>
#include 
<mysqltool.h>

int main()
{
      MYSQL mysql;     
//mysql˜qžæŽ¥ 
      MYSQL_RES *res; //˜q™ä¸ª¾l“构代表˜q”回行的一个查询结果集 
      MYSQL_ROW row; //一个行数据的类型安å…?type-safe)的表½C?/span>
      char *query;  //查询语句 
      int t,r;
      mysql_init(
&mysql);

      
      
if (!mysql_real_connect(&mysql,"localhost""lottobar""123456""lottobar",3306,NULL,0))
      {
         printf( 
"Error connecting to database: %s\n",mysql_error(&mysql));
      }  
else 
         printf(
"Connected\n");
     
      
      query
="SET CHARACTER SET GBK"//讄¡½®¾~–码 
      t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));
      
if(t)
      {
           printf(
"¾~–码讄¡½®å¤ÞpÓ|\n");
      }
      query
=" select * from demo ";
      t
=mysql_real_query(&mysql,query,(unsigned int)strlen(query));
      
if(t)
      {
          printf(
"执行查询时出现异å¸? %s",mysql_error(&mysql));
          
      }
else
          printf(
"[%s] æž„徏成功 \n",query);
      res
=mysql_store_result(&mysql);
      
while(row=mysql_fetch_row(res))
      {                              
           
for(t=0;t<mysql_num_fields(res);t++)
           {
               printf(
"%s\t",row[t]);
           }
           printf(
"\n");
      }
      mysql_free_result(res);
       
      t
=mysql_real_query(&mysql,"SET AUTOCOMMIT =0",(unsigned int)strlen("SET AUTOCOMMIT =0"));
      
if(t){
            printf(
"启用手工事务å¤ÞpÓ|\n");
      }
else{
            printf(
"启用手工事务成功\n");
      }
      t
=mysql_real_query(&mysql,"Begin ;",(unsigned int)strlen("Begin ;"));
      query
="insert into demo(name,age)values('老裴','89')";
      
int inset_result=xinsert(&mysql,query);
      query
="delete  from demo  where name='老裴'";
      
int delete_result=xdelete(&mysql,query);
      query
="update demo set name='裴屋æ? where name='ccd' and inc_id=13";
      
int update_result=xupate(&mysql,query); 
      
      query
="insert into demo(inc_id,name,age)values(16,'老裴','89')";//执行会出现异常的语句 
      int fail_result=xinsert(&mysql,query);
      
      
if(inset_result==0 && delete_result==0 && update_result==0 && fail_result==0){
           printf(
"事务提交\n");
           t
=mysql_real_query(&mysql,"COMMIT;",(unsigned int)strlen("COMMIT;"));
      }
else{
           printf(
"事务回滚\n");
           t
=mysql_real_query(&mysql,"ROLLBACK;",(unsigned int)strlen("ROLLBACK;"));
      }
      
      
return 0;  
}



]]>
Windowsòq›_°ä¸‹Mysql C½E‹åºè®¾è®¡http://www.aygfsteel.com/pdw2009/archive/2008/03/09/184869.htmlæœ‰çŒ«ç›æ€¼´çš„æ—¥å­?/dc:creator>æœ‰çŒ«ç›æ€¼´çš„æ—¥å­?/author>Sun, 09 Mar 2008 10:26:00 GMThttp://www.aygfsteel.com/pdw2009/archive/2008/03/09/184869.htmlhttp://www.aygfsteel.com/pdw2009/comments/184869.htmlhttp://www.aygfsteel.com/pdw2009/archive/2008/03/09/184869.html#Feedback0http://www.aygfsteel.com/pdw2009/comments/commentRss/184869.htmlhttp://www.aygfsteel.com/pdw2009/services/trackbacks/184869.htmlWindowsòq›_°ä¸?/span>Mysql C½E‹åºè®¾è®¡

一�span style="font-family: 宋体">哆嗦一�/span>

从打开始学¾~–程以来åQŒæŽ¥è§¦çš„½W¬ä¸€é—¨çœŸæ­£çš„¾~–程语言æ˜?/span>CåQ?/span>foxbase不算åQ‰ï¼Œæƒ›_½“òq´ä¿ºè‡ªå­¦å®Œæµ©å¼ºå”那本ã€?/span>C语言½E‹åºè®¾è®¡ã€‹æ—¶åQŒè€å¸ˆæ‰å¼€å§‹æ•™pascal。自毕业以来一直没有机会写˜q‡æœ‰åº”用价值的C½E‹åºåQŒä»ŽDelphi做到J2EE。打½Ž—从现在开始利用业余时间学ä¹?/span>Pro*CåQ?/span>Mysql CåQŒä¹Ÿä¸çŸ¥ä¸ºå•¥å¯?/span>C念念不忘åQŒå´æ²¡æœºç”?/span>C来写½E‹åºã€?/span>

二�span style="font-family: 宋体">开发环�/span>

1�nbsp;windowsXP

2�nbsp;mysql 5.0.22

3�nbsp;Dev-C++ 4.9.9.2

4�nbsp;Mysql C for Dev-Cpp (MySQL.DevPak)

a)         用过Dev-C++çš„äh都应该知é?/span>devpak吧我ž®×ƒ¸è¯¦è¯´åQŒå¦‚果你用的æ˜?/span>C++åQŒè¯·ä¸‹è²(mysqlpp-2.3.2-gcc3.4.2-1due.DevPak)

b)        MySQL.DevPak 下蝲地址åQ?/span> http://downloads.sourceforge.net/dev-cpp/MySQL.DevPak

三ã€?span style="font-family: 宋体">安装及配¾|?/span>

1、双å‡?/span>MySQL.DevPakæ–‡äšgåQŒæŒ‰æ­¥éª¤æŠŠè¿™å¼€å‘包安装完成。直åˆ?/span>package Mangaer 出现“MySQL”卛_¯ã€?/span>

2、单å‡?#8220;工具”->“¾~–译选项”->“¾~–译å™?#8221;->“在连接器命ä×o行中加下以下命ä×o”åQˆé€‰æ‹©åQ‰ï¼Œåœ¨ä¸‹é¢çš„æ–‡æœ¬æ¡†ä¸­æ·ÕdŠ -lmysql ã€?/span>

3、在Dev-C++中添åŠ?/span>mysqlçš?/span>libå’?/span>include æ–‡äšgåQŒå…·ä½“æ–¹æ³?/span>:

       “工具”->“¾~–译选项”->“¾~–译å™?#8221;->“目录” 中添åŠ?/span>

四�span style="font-family: 宋体">例程代码

#include <stdlib.h>

#include <winsock.h>

#include <mysql.h>

#include <stdio.h>

/*

 Name: ‹¹‹è¯•例子

 Copyright: http://www.aygfsteel.com/pdw2009  

 Author: è£´å¯dä¸?/span>

 Date: 09-03-08 18:14

 Description:

*/

int main()

{

      MYSQL mysql;     //mysql˜qžæŽ¥

      MYSQL_RES *res; //˜q™ä¸ª¾l“构代表˜q”回行的一个查询结果集

      MYSQL_ROW row; //一个行数据的类型安å…?/span>(type-safe)的表½C?/span>

      char *query; //查询语句

      int t,r;

      mysql_init(&mysql);

      if (!mysql_real_connect(&mysql,"localhost", "lottobar", "123456", "lottobar",3306,NULL,0))

      {

         printf( "Error connecting to database: %s"n",mysql_error(&mysql));

      } else

         printf("Connected..."n");

      query="SET CHARACTER SET GBK"; //讄¡½®¾~–码

      t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));

      if(t)

      {

           printf("¾~–码讄¡½®å¤ÞpÓ|"n");

      }

      query=" select * from demo ";

      t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));

      if(t)

      {

          printf("执行查询时出现异å¸?/span>: %s",mysql_error(&mysql));

      }else

          printf("[%s] 构徏成功 "n",query);

      res=mysql_store_result(&mysql);

      while(row=mysql_fetch_row(res))

      {                              

           for(t=0;t<mysql_num_fields(res);t++)

           {

               printf("%s"t",row[t]);

           }

           printf(""n");

      }

      mysql_free_result(res);

      sleep(1);

      return 0; 

}

五�span style="font-family: 宋体">注意事项

Windows C½E‹åºè®‘֏ªè¦æ¶‰åŠç½‘¾lœçš„都应该加上这两个文äšgåQŒå¦åˆ™è‚¯å®šå‡ºé”?/span>

#include <stdlib.h>

#include <winsock.h>

Mysql Cä¹Þq çš„è§£å†Ïx–¹å¼?/span>

query="SET CHARACTER SET GBK"; //讄¡½®¾~–码

t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));

       如果你有问题可以åˆ?/span>www.aygfsteel.com/pdw2009åŽÖMº¤‹¹?/span>



该文属作者原åˆ?转蝲è¯äh³¨æ˜Žå‡º: http://www.aygfsteel.com/pdw2009

]]>
pro*c动态SQL技æœ?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/pdw2009/archive/2007/09/28/149017.html</guid><wfw:comment>http://www.aygfsteel.com/pdw2009/comments/149017.html</wfw:comment><comments>http://www.aygfsteel.com/pdw2009/archive/2007/09/28/149017.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/pdw2009/comments/commentRss/149017.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/pdw2009/services/trackbacks/149017.html</trackback:ping><description><![CDATA[<p>共有4¿Uæž„æ–ÒŽ³•构造动态SQL语句åQ?br /> 1、方法一åQ?br />        仅适用于非SELECT语句åQŒä¸”语句中不包含输入宿主变量。格式如ä¸?br />        EXEC SQL EXECUTE  IMMEDIATE  :host_string  æˆ?br />         EXEC SQL EXECUTE  IMMEDIATE  "UPDATE XX SET NAME=yyyy  HERE ID=1"<br /> <br /> 2、方法二åQ?br />   也只适用于非åQ»I×IåQ¬ï×IåQ£ï¼´è¯­å¥åQŒï¼³åQ±ï¼¬è¯­å¥å¯åŒ…含虚拟输入宿ä¸Õd˜é‡å’ŒæŒ‡ç¤ºå™¨å˜é‡ï¼Œä½†å®ƒä»¬çš„个数和数据类型在预编译时必须是可知的ã€?br />          处理分三步:<br />         A、构造一个动态SQL语句ã€?br />         B、用PREPARE 语句来分析和命名该动态SQL语句<br />         C、用EXECUTE 来执è¡?br />      EXEC SQL PREPARE 用于分析一个动态SQLåQŒå¦‚<br />         strcpy(sql_stmt,"DELETE FROM EMP  WHERE JOB=:v");<br />          EXEC SQL PREPARE stmt FROM :sql_stmt;<br />     EXECUTE 语句格式åQ?br />      EXEåQ£ã€€åQ»I¼±åQ¬ã€€åQ¦ï¼¯åQŒÓ€€<行数> EXECUTE  <动态语å?gt; USING  <参数><br />     EXEC SQL EXECUTE stmt USING :job;<br /> <br /> 3、方法三åQ?br />      æ–ÒŽ³•三只适用于SELECT语句åQŒè¯­å¥ä¸­åŒ…含选择表项个数åQŒå’Œè™šæ‹Ÿè¾“入宿主变量个数在预¾~–译旉™ƒ½æ˜¯å·²çŸ¥çš„åQŒä½†æ˜¯æ•°æ®åº“的表、列名可能运行时指定。步骤如下:<br />      1、定义动态脚本ã€?br />      2、分析动态脚本ã€?br />      3、定义游标,游标的语句就是动态分析的名ã€?br />      代码例子:<br />         strcpy(sql_stmt,"SELECT SID,ENAME FROM EMP  WHERE JOB=:v");<br />          EXEC SQL PREPARE stmt FROM :sql_stmt;<br />         EXEC SQL DECLARE cur FOR  stmt ;<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: #0000ff">for</span><span style="color: #000000">(;;)<br />     {<br />          EXEC SQL </span><span style="color: #0000ff">for</span><span style="color: #000000"> :n FETCH stud_cur  INTO :stud_id,:stud_age,:stud_n<br /> ame,:stud_addr;<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">];<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 />          </span><span style="color: #0000ff">int</span><span style="color: #000000"> i;<br /> </span><span style="color: #0000ff">if</span><span style="color: #000000">(sqlca.sqlcode</span><span style="color: #000000"><</span><span style="color: #000000">0</span><span style="color: #000000">) {<br /> printf(</span><span style="color: #000000">"</span><span style="color: #000000">ora 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 />          </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"><</span><span style="color: #000000">rows;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />          {<br />               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 />          }<br />          j</span><span style="color: #000000">++</span><span style="color: #000000">;<br />          printf(</span><span style="color: #000000">"</span><span style="color: #000000">currsor %d 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"> ((sqlca.sqlcode </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #000000">1403</span><span style="color: #000000">) ) </span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />     }</span></div> <p>上面遍因游标是一‹Æ¡å–N条记录的åQŒå› ä¸ºstud_id½{‰æ˜¯æ•°ç»„åQŒn为数¾l„é•¿åº?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 </span><span style="color: #000000"><</span><span style="color: #000000">stdio.h</span><span style="color: #000000">></span><span style="color: #000000"><br /> #include </span><span style="color: #000000"><</span><span style="color: #0000ff">string</span><span style="color: #000000">.h</span><span style="color: #000000">></span><span style="color: #000000"><br /> #include </span><span style="color: #000000"><</span><span style="color: #000000">stdlib.h</span><span style="color: #000000">></span><span style="color: #000000"><br /> EXEC SQL include sqlca;<br /> #ifdef TRUE<br /> </span><span style="color: #0000ff">#undef</span><span style="color: #000000"> 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"> TRUE 1</span><span style="color: #000000"><br /> <br /> EXEC ORACLE OPTION (RELEASE_CURSOR </span><span style="color: #000000">=</span><span style="color: #000000"> YES);<br /> EXEC SQL BEGIN DECLARE SECTION;<br />                 VARCHAR username[</span><span style="color: #000000">20</span><span style="color: #000000">];<br />                 VARCHAR password[</span><span style="color: #000000">20</span><span style="color: #000000">];<br /> <br /> EXEC SQL END DECLARE SECTION;<br /> <br /> <br /> </span><span style="color: #0000ff">void</span><span style="color: #000000"> sql_error()<br /> {<br />     EXEC SQL WHENEVER SQLERROR CONTINUE;<br />     printf(</span><span style="color: #000000">"</span><span style="color: #000000">\n Oracle error detected:\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br />     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 />     EXEC SQL ROLLBACK RELEASE;<br />     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"> dyna_cursor()<br /> {<br />     EXEC SQL BEGIN DECLARE SECTION;<br />         </span><span style="color: #0000ff">char</span><span style="color: #000000"> </span><span style="color: #000000">*</span><span style="color: #000000">sql_str;<br />         </span><span style="color: #0000ff">int</span><span style="color: #000000"> stud_id;<br />         </span><span style="color: #0000ff">int</span><span style="color: #000000"> stud_age;<br />         VARCHAR stud_name[</span><span style="color: #000000">20</span><span style="color: #000000">];<br />         VARCHAR stud_addr[</span><span style="color: #000000">60</span><span style="color: #000000">];<br />         </span><span style="color: #0000ff">int</span><span style="color: #000000"> vage;  <br />     EXEC SQL END   DECLARE SECTION;<br />     sql_str</span><span style="color: #000000">=</span><span style="color: #000000">(</span><span style="color: #0000ff">char</span><span style="color: #000000"> </span><span style="color: #000000">*</span><span style="color: #000000">)malloc(</span><span style="color: #000000">400</span><span style="color: #000000">);<br />     vage</span><span style="color: #000000">=</span><span style="color: #000000">3</span><span style="color: #000000">;<br />     strcpy(sql_str,</span><span style="color: #000000">"</span><span style="color: #000000">SELECT STUD_ID,STUD_NAME FROM PROC_STUD WHERE 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">    EXEC SQL PREPARE S FROM :sql_str;<br />     EXEC SQL DECLARE C CURSOR  FOR S;<br />     printf(</span><span style="color: #000000">"</span><span style="color: #000000">please input age :\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br />     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">&</span><span style="color: #000000">vage);<br />     EXEC SQL OPEN C USING :vage;<br />     EXEC SQL WHENEVER NOT FOUND GOTO notfound;<br />     </span><span style="color: #0000ff">while</span><span style="color: #000000">(TRUE)<br />     {<br />         EXEC SQL FETCH C INTO :stud_id,:stud_name;<br />         </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 />         </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 />         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 />     }<br />  notfound:<br />     printf(</span><span style="color: #000000">"</span><span style="color: #000000">\nQuery Returned %d row %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 />     EXEC SQL CLOSE C;<br />     EXEC SQL COMMIT RELEASE;<br />     printf(</span><span style="color: #000000">"</span><span style="color: #000000">Have a good day!\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br />     exit(</span><span style="color: #000000">0</span><span style="color: #000000">);<br />  sqlerror:<br />     printf(</span><span style="color: #000000">"</span><span style="color: #000000">%d %.*s\n</span><span style="color: #000000">"</span><span style="color: #000000">,sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);<br />     EXEC SQL WHENEVER SQLERROR CONTINUE;<br />     EXEC SQL CLOSE C;<br />     EXEC SQL ROLLBACK RELEASE;<br />     exit(</span><span style="color: #000000">1</span><span style="color: #000000">);<br /> }<br /> <br /> <br /> main()<br /> {<br />      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 />      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 />      username.len</span><span style="color: #000000">=</span><span style="color: #000000">strlen(username.arr);<br />      password.len</span><span style="color: #000000">=</span><span style="color: #000000">strlen(password.arr);<br /> <br />      EXEC SQL CONNECT :username IDENTIFIED BY :password;<br />      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 />      printf(</span><span style="color: #000000">"</span><span style="color: #000000">login user=%s\n</span><span style="color: #000000">"</span><span style="color: #000000">,username.arr);<br />      dyna_cursor();<br />      exit(</span><span style="color: #000000">0</span><span style="color: #000000">);<br /> }</span></div> <p><br />    <br /> 4、方法四<br /> </p> <img src ="http://www.aygfsteel.com/pdw2009/aggbug/149017.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/pdw2009/" target="_blank">æœ‰çŒ«ç›æ€¼´çš„æ—¥å­?/a> 2007-09-28 11:09 <a href="http://www.aygfsteel.com/pdw2009/archive/2007/09/28/149017.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>procåQŒæ·»ã€åˆ ã€æŸ¥ã€æ”¹http://www.aygfsteel.com/pdw2009/archive/2007/09/23/147609.htmlæœ‰çŒ«ç›æ€¼´çš„æ—¥å­?/dc:creator>æœ‰çŒ«ç›æ€¼´çš„æ—¥å­?/author>Sun, 23 Sep 2007 11:41:00 GMThttp://www.aygfsteel.com/pdw2009/archive/2007/09/23/147609.htmlhttp://www.aygfsteel.com/pdw2009/comments/147609.htmlhttp://www.aygfsteel.com/pdw2009/archive/2007/09/23/147609.html#Feedback0http://www.aygfsteel.com/pdw2009/comments/commentRss/147609.htmlhttp://www.aygfsteel.com/pdw2009/services/trackbacks/147609.html 1、登陆到默认数据åº?br />       A、有IDENTIFIED BY 子句åQŒå…¶æ ¼å¼å¦‚下åQ?br />               EXEC  SQL CONNECT  åQšusername  IDENTIFIED BY :password
     B、没有IDENTIFIED BY子句
              EXEC SQL CONNECT :usr_pwd
           usr_pwdç”?分隔用户名和口ä×o
2、显式登é™?br />        EXEC SQL BEGIN  DECLARE SECTION 
            VARCHARE username[20];
            VARCHARE password[20];
            VARCHARE dbname[20];  
       EXEC SQL END DECLARE SECTION  
      /*附å€û|¼Œç•?/
      EXEC SQL DECLARE  dbname DATABASE;
      /*登陆˜qœç¨‹éžé»˜è®¤æ•°æ®åº“*/
     EXEC SQL CONNECTION  :username IDENTIFIELD BY :password 
     AT   db_like_name USING :dbname;
    /*如果db_like_name 是宿ä¸Õd˜é‡å°±ä¸ç”¨å®šä¹‰*/
郁闷在hpux下写好多例程åQŒå¯ä¸å°å¿ƒä¸€ä¸ªrmž®±å¹²æŽ‰äº†, 没法再更æ–?br />

]]>
一个最½Ž€å•çš„pro*c½E‹åºhttp://www.aygfsteel.com/pdw2009/archive/2007/09/17/145836.htmlæœ‰çŒ«ç›æ€¼´çš„æ—¥å­?/dc:creator>æœ‰çŒ«ç›æ€¼´çš„æ—¥å­?/author>Mon, 17 Sep 2007 06:12:00 GMThttp://www.aygfsteel.com/pdw2009/archive/2007/09/17/145836.htmlhttp://www.aygfsteel.com/pdw2009/comments/145836.htmlhttp://www.aygfsteel.com/pdw2009/archive/2007/09/17/145836.html#Feedback0http://www.aygfsteel.com/pdw2009/comments/commentRss/145836.htmlhttp://www.aygfsteel.com/pdw2009/services/trackbacks/145836.html
#include <stdio.h>
#include 
<string.h>
#include 
<stdlib.h>
EXEC SQL include sqlca;
EXEC ORACLE OPTION (RELEASE_CURSOR = YES);
EXEC SQL BEGIN DECLARE SECTION;
                
VARCHAR username[20];
                
VARCHAR password[20];
EXEC SQL END DECLARE SECTION;

void sql_error()
{
                
EXEC SQL WHENEVER SQLERROR CONTINUE;
                printf("\n Oracle error detected:\n");
                printf("\n
%.70s\n",sqlca.sqlerrm.sqlerrmc);
                
EXEC SQL ROLLBACK RELEASE;
exit(1);
}

main()
{
                strcpy(username.arr,"gdnum_true");
                strcpy(password.arr,"gdnumtrue_10");
                username.
len=strlen(username.arr);
                password.
len=strlen(password.arr);


                
EXEC SQL CONNECT :username IDENTIFIED BY :password;
                printf("sqlca.sqlcode
=%d;\n",sqlca.sqlcode);
                printf("login 
user=%s",username.arr);
                
exit(0);
}

proc pro1.pc
cc -o pro1 pro1.c -L $ORACLE_HOME/lib32 -lclntsh
不作文字说明åQŒåªä½œä¾‹½E‹è®°è½?

]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ·±²ýÏØ| ½úÖÐÊÐ| »ýʯɽ| ÆÕÄþÊÐ| ×ÞÆ½ÏØ| ÒÇÕ÷ÊÐ| ÅíË®| ·ïÌ¨ÏØ| Á¬ÖÝÊÐ| ÄÇÇúÏØ| ÕżҿÚÊÐ| ¿Ë¶«ÏØ| ÁÙëÔÏØ| ÏØ¼¶ÊÐ| ÁéÎäÊÐ| ãòË®ÏØ| ÊÙÑôÏØ| ¦·³ÏØ| ·½ÕýÏØ| ÌÁ¹ÁÇø| ¶¼²ýÏØ| Ëç±õÏØ| Î¼Ô´ÏØ| ³É¶¼ÊÐ| µÂ±£ÏØ| ÕÂÇðÊÐ| Åî°²ÏØ| ÓÎÏ·| ÉÏÓÌÏØ| ¼ÎÀèÏØ| ÕØÖÝÏØ| ÐÂÏçÊÐ| ·¿²ú| ºÚºÓÊÐ| Î÷³äÏØ| ¤ÄÏÊÐ| ÄÏÍ¶ÏØ| Ô«ÇúÏØ| É̺ÓÏØ| иÉÏØ| äê´¨ÏØ|