Welcome 微信登录

首页 / 数据库 / MySQL / Linux下用freetds执行SQL Server的sql语句和存储过程

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)
表情: 姓名: 字数