Windows下访问Sqlserver很方便,特别是用ADO,即便是用C++写代码,也没怎么感觉麻烦,如果是用C#的话,写起来估计更是飞一般的感觉,可现在我要处理的问题是在Linux下访问SqlServer,执行sql语句和存储过程……好,不废话了,下面开工。一、包含头文件
#include <sybfront.h> //freetds#include <sybdb.h> //freetds 二、执行sql语句或存储过程1、查询类 1.1 核心代码:
bool queryCmd(DBPROCESS *dbprocess,
const char* strSql){dbcmd(dbprocess,strSql);
if(dbsqlexec(dbprocess) == FAIL){printf("Query error.
");
returnfalse;}DBINT result_code;
char infArr[MaxColumnNums][MaxColumnSize];
int retCode = 1;
while ((result_code = dbresults(dbprocess)) != NO_MORE_RESULTS){
if (result_code == SUCCEED){
int i=1;
int sz = 0;
while(true){//retCode = dbbind(dbprocess,i++, CHARBIND, (DBCHAR)0, (BYTE*)infArr[i]);retCode = dbbind(dbprocess,i, CHARBIND, (DBINT)0, (BYTE*)infArr[i]);
if(retCode != 1)
break;i++;}sz = i;
while (dbnextrow(dbprocess) != NO_MORE_ROWS){
for(i=1; i<=sz; i++){//printf("%s ",infArr[i]);cout<<infArr[i]<<" ";//<<endl;memset(infArr[i],0,
sizeof(infArr[i]));}cout<<endl;}}}
returntrue;} 1.2 直接执行Sql语句
queryCmd(dbprocess, "select * from table"); 1.3 不带参数的存储过程 创建存储过程如下: createproctestPro as select*fromstu; go 调用如下:
queryCmd(dbprocess, "exec testPro"); 1.4 带参数的存储过程 创建存储过程如下: createprocgetPro1(@numint) as select*fromstuwhereStuID=@num;go 调用如下:
queryCmd(dbprocess, "exec getPro1 1003"
); 2、更新类2.1 核心代码:
bool updateCmd(DBPROCESS *dbprocess,
const char* strSql){dbcmd(dbprocess,strSql);
if(dbsqlexec(dbprocess) == FAIL){printf("error : update fail
");
returnfalse;}
returntrue;}2.2 直接执行sql语句
updateCmd(dbprocess,"insert into stu(StuID, Name, Age) values(888,"Mike",24)"
);2.3不带参数的存储过程创建存储过程如下: createprocdelPro1as deletefromstuwhereStuID=888go调用如下:
updateCmd(dbprocess,"exec delPro1"); 2.4 带参数的存储过程创建存储过程如下: createprocdelPro2(@numint)as deletefromstuwhereStuID=@numgo 调用如下:
updateCmd(dbprocess,"exec delPro2 888"
); 三、编译选项比如源文件为test2.cpp,freetds的安装路径为usr/local/freetds ,则如下编译:g++ -g test2.cpp -o test2 -L/usr/local/freetds/lib -lsybdb -I/usr/local/freetds/includePS:环境 freetds 0.91 + Sqlserver 2008好,就这些了,希望对你有帮助。MySQL 5.5 PROXY USER 伪装用户Oracle数据库添加或删除一列相关资讯 Linux使用教程
- 如何在 Linux 中安全擦除删除的文 (04/10/2014 06:12:05)
- Linux中profile的执行说明 (09/28/2012 06:16:01)
- Mac/Linux 多线程下载解决方案 (08/30/2012 07:39:07)
| - Linux下AutoTools工具集使用教程 (11/20/2012 12:13:57)
- Linux下根据端口号查询对应进程 (09/05/2012 06:14:34)
- Linux平台下HD 2000/3000/4000性能 (08/28/2012 06:28:48)
|
本文评论 查看全部评论 (0)