各位大虾救命,谁做过嵌入c的sql程序,高分求救!

db2 可以用c++来编写潜入c的sql程序,oracle也可以用c++来编写嵌入c的sql,有谁知道,急需知道sqlserver,sybase能否用c++编写嵌入c的sql程序。拜托!
---------------------------------------------------------------

cpre 可以做 c + sql

---------------------------------------------------------------

都可以支持!
---------------------------------------------------------------

sybase有db library和ct library,都可以做这些事情
---------------------------------------------------------------

连接sybase的:
#include

  1<stdio.h>   
  2#include <stdlib.h>   
  3#include <string.h>   
  4#include <ctype.h>   
  5#include <sybhesql.h>   
  6#include <sybtesql.h>   
  7char logheader[15]="[gjq.kmymenu]:";   
  8/* Declare the SQLCA. */   
  9EXEC SQL INCLUDE SQLCA;   
 10void err_p();   
 11void warn_p();   
 12  
 13/*去右边的空格*/   
 14char* myrtrim(char* in)   
 15{   
 16int i;   
 17  
 18for(i=strlen(in)-1;i&gt;0;i--)   
 19{   
 20if(in[i]==' ')   
 21continue;   
 22else   
 23break;   
 24}   
 25in[i+1]=0;   
 26return in;   
 27}   
 28  
 29char * encrypt1(char * sstr)   
 30{   
 31int i,slen;   
 32  
 33slen = strlen(sstr);   
 34for(i=0;i<slen;i++) "");="" "sa");="" "sybase");="" (sqlca.sqlcode)="" );="" *="" *argv[])="" *rqst)="" *一级菜单序号*="" *临时变量*="" *二级菜单序号*="" *优惠权限="" *单位级别="" *备用1="" *备用2="" *密码*="" *快捷命令="" *提示内容="" *操作员名称*="" *操作员密码*="" *操作员工号*="" *操作员级别信息*="" *文件名="" *文件最新版本*="" *显示内容="" *模块号="" *登录位置*="" *登录日志信息*="" *登录系统名称*="" *组长标志="" *职务="" *菜单项内容*="" *输入数据*="" *输入数据3="" *输入数据4="" *部门代码="" *错误提示内容*="" *错误提示属性0:不可选项1:提示时可选择,选择yes可继续*="" *错误编号*="" *附加参数="" ,'\0',sizeof(iczygh)="" ,'\0',sizeof(iczymm)="" ,'\0',sizeof(idlwz)="" ,'\0',sizeof(idlxtmc)="" ,'\0',sizeof(obmdm)="" ,'\0',sizeof(oby1)="" ,'\0',sizeof(oby2)="" ,'\0',sizeof(oczymc)="" ,'\0',sizeof(odwjb)="" ,'\0',sizeof(oerrmsg)="" ,'\0',sizeof(ofjcs)="" ,'\0',sizeof(okjml)="" ,'\0',sizeof(omkh)="" ,'\0',sizeof(otsnr)="" ,'\0',sizeof(owjm)="" ,'\0',sizeof(owjzxbb)="" ,'\0',sizeof(oxsnr)="" ,'\0',sizeof(oyhqx)="" ,'\0',sizeof(ozw)="" ,'\0',sizeof(ozzbz)="" ,'\0',sizeof(vmm)="" -1;="" :password="" :str;="" :username="" :登录位置*="" :登录系统名称*="" <="" all;="" argc,="" begin="" by="" call="" char="" close="" connect="" continue;="" database="" db:sqlerrmc='%s",' declare="" disconnect="" end="" err_p();="" exec="" fail="" fbfr32*="" for(i="0;" found="" getmenuitem(tpsvcinfo="" i="" i;="" iczygh[9];="" iczymm[21];="" identified="" idlwz[21];="" idlxtmc[21];="" if="" int="" logheader,sqlca.sqlerrm.sqlerrmc);="" long="" memset(iczygh="" memset(iczymm="" memset(idlwz="" memset(idlxtmc="" memset(obmdm="" memset(oby1="" memset(oby2="" memset(oczymc="" memset(odwjb="" memset(oerrmsg="" memset(ofjcs="" memset(okjml="" memset(omkh="" memset(otsnr="" memset(owjm="" memset(owjzxbb="" memset(oxsnr="" memset(oyhqx="" memset(ozw="" memset(ozzbz="" memset(vmm="" my_buf;="" not="" obmdm[2];="" oby1[2];="" oby2[61];="" oczymc[61];="" odlwz[21];="" odlxtmc[21];="" odwjb[2];="" oejcdxh="0;" oejcdxh;="" oerr[2];="" oerrmsg[61];="" oerrno="0;" oerrno;="" oerrtssx="0;" oerrtssx;="" ofjcs[21];="" okjml[4];="" omkh[7];="" open="" otsnr[61];="" owjm[61];="" owjzxbb[21];="" oxsnr[21];="" oyhqx[11];="" oyjcdxh="0;" oyjcdxh;="" ozw[61];="" ozzbz[2];="" password[30];="" rcvbuf;="" return="" return(0);="" rqst-="" section;="" sql="" sqlerror="" sqlwarning="" sstr;="" sstr[i]="(((sstr[i]*(i+1)+slen)%96)+32)%128;" str[30];="" strcpy(password,="" strcpy(str,="" strcpy(username,="" tpsvrdone()="" tpsvrinit(int="" userlog("%s="" userlog("tperrno:%d,tperr:%s\n",tperrno,tpstrerror(tperrno));="" username[30];="" using="" vmm[21];="" void="" warn_p();="" whenever="" {="" }="">len-1; i++) rqst-&gt;data[i] = toupper(rqst-&gt;data[i]);*/   
 35  
 36rcvbuf=(FBFR32 *) tpalloc("FML32",NULL,500);   
 37rcvbuf=(FBFR32 *)rqst-&gt;data;   
 38Fget32(rcvbuf,STR01,0,Iczygh, NULL);   
 39Fget32(rcvbuf,STR02,0,Iczymm, NULL);   
 40Fget32(rcvbuf,STR03,0,Idlxtmc,NULL);   
 41Fget32(rcvbuf,STR04,0,Idlwz, NULL);   
 42tpfree((char *)rcvbuf);   
 43myrtrim(Iczygh);   
 44myrtrim(Iczymm);   
 45myrtrim(Idlxtmc);   
 46myrtrim(Idlwz);   
 47  
 48/*提取操作员信息*/   
 49EXEC SQL COMMIT WORK;   
 50EXEC SQL COMMIT WORK;   
 51EXEC SQL COMMIT WORK;   
 52EXEC SQL SELECT rtrim(dlkl),CASE zzbz WHEN '1' THEN '1' ELSE '0' END zzbz,   
 53CASE WHEN DATEDIFF(day, qsrq, GETDATE())&lt;0 THEN '1'   
 54WHEN DATEDIFF(day,GETDATE(),jzrq)&lt;0 THEN '2' ELSE '0' END rqerr,   
 55czymc,isnull(bmdm,'Z'),zw,dwjb,yhqx   
 56INTO :Vmm, :Ozzbz, :Oerr, :Oczymc, :Obmdm, :Ozw, :Odwjb, :Oyhqx   
 57FROM jtsjk..CZYXXB   
 58WHERE czygh=rtrim(:Iczygh);   
 59  
 60myrtrim(Vmm);   
 61  
 62if (sqlca.sqlcode == 100)   
 63{   
 64Oerrno = -2;   
 65sprintf(Oerrmsg,"此操作员不存在!");   
 66}   
 67else   
 68if (sqlca.sqlcode != 0)   
 69{   
 70userlog("%s:提取操作员信息失败!\n",logheader);   
 71userlog("sqlerrmc=%s", sqlca.sqlerrm.sqlerrmc);   
 72userlog("tperrno:%d,tperr:%s\n",tperrno,tpstrerror(tperrno));   
 73Oerrno = -1;   
 74sprintf(Oerrmsg,"提取操作员信息失败!请稍候再试!");   
 75}   
 76EXEC SQL COMMIT WORK;   
 77EXEC SQL COMMIT WORK;   
 78EXEC SQL COMMIT WORK;   
 79if (Oerrno==0)   
 80if (strcmp(Oerr,"1")==0)   
 81{   
 82Oerrno = -3;   
 83sprintf(Oerrmsg,"此操作员的工号还没有到生效期!");   
 84}   
 85else   
 86if (strcmp(Oerr,"2")==0)   
 87{   
 88Oerrno = -4;   
 89sprintf(Oerrmsg,"此操作员的工号已经失效!");   
 90}   
 91else   
 92if (strcmp(encrypt1(Iczymm),Vmm)!=0)   
 93{   
 94Oerrno = -5;   
 95sprintf(Oerrmsg,"错误的密码!密码是区分大小写的,请确认使用正确的大小写!");   
 96}   
 97if (Oerrno&lt;0) /*有错误直接返回啦*/   
 98{   
 99my_buf=(FBFR32 *) tpalloc("FML32",NULL,200);   
100Fadd32(my_buf, LONG11, (char *)&amp;Oerrno, 0);   
101Fadd32(my_buf, LONG12, (char *)&amp;Oerrtssx, 0);   
102Fadd32(my_buf, STR21, Oerrmsg, 0);   
103tpreturn(TPSUCCESS, 0, (char *) my_buf, 0L, 0);   
104}   
105  
106/*检查操作员登录日志*/   
107EXEC SQL SELECT dlxtmc,dlwz INTO :Odlxtmc, :Odlwz   
108FROM ywsjk..CZYDLJLB WHERE czygh=rtrim(:Iczygh) AND dlbz='1';   
109if ((sqlca.sqlcode!=0)&amp;&amp;(sqlca.sqlcode!=100))   
110{   
111Oerrno = -6;   
112sprintf(Oerrmsg,"提取操作员的登录信息失败!请稍候再试或与管理员联系!");   
113}   
114else   
115if (sqlca.sqlcode==0)   
116{   
117Oerrno = -7;   
118myrtrim(Odlxtmc);   
119myrtrim(Odlwz);   
120sprintf(Oerrmsg,"此工号已经在&lt;%s&gt;登录了&lt;%s&gt;系统!",Odlwz,Odlxtmc);   
121}   
122EXEC SQL COMMIT WORK;   
123EXEC SQL COMMIT WORK;   
124EXEC SQL COMMIT WORK;   
125if (Oerrno&lt;0) /*有错误返回啦*/   
126{   
127my_buf=(FBFR32 *) tpalloc("FML32",NULL,200);   
128Fadd32(my_buf, LONG11, (char *)&amp;Oerrno, 0);   
129Fadd32(my_buf, LONG12, (char *)&amp;Oerrtssx, 0);   
130Fadd32(my_buf, STR21, Oerrmsg, 0);   
131tpreturn(TPSUCCESS, 0, (char *) my_buf, 0L, 0);   
132}   
133  
134  
135/*记录操作员登录日志*/   
136EXEC SQL INSER</slen;i++)></sybtesql.h></sybhesql.h></ctype.h></string.h></stdlib.h></stdio.h>
Published At
Categories with 数据库类
Tagged with
comments powered by Disqus