博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux下用freetds执行SqlServer的sql语句和存储过程
阅读量:6174 次
发布时间:2019-06-21

本文共 2310 字,大约阅读时间需要 7 分钟。

  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.\n"); 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<
<<" ";//<

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\n"); returnfalse; } returntrue;}

2.2 直接执行sql语句

updateCmd(dbprocess,"insert into stu(StuID, Name, Age) values(888,'Mike',24)");

2.3不带参数的存储过程

创建存储过程如下: 

createprocdelPro1

as

  deletefromstuwhereStuID=888

go

调用如下:

updateCmd(dbprocess,"exec delPro1"); 

2.4 带参数的存储过程

创建存储过程如下: 

createprocdelPro2(@numint)

as

  deletefromstuwhereStuID=@num

go 

调用如下: 

updateCmd(dbprocess,"exec delPro2 888"); 

三、编译选项

比如源文件为test2.cppfreetds的安装路径为usr/local/freetds ,则如下编译:

g++ -g test2.cpp -o test2 -L/usr/local/freetds/lib -lsybdb -I/usr/local/freetds/include

PS环境 freetds 0.91 + Sqlserver 2008

好,就这些了,希望对你有帮助。

转载地址:http://ccqba.baihongyu.com/

你可能感兴趣的文章
git Unstaged changes after reset
查看>>
一些时兴的IT技术
查看>>
我的友情链接
查看>>
从helloworld开始
查看>>
Spring + JUNIT4 + JPA/Hibernate + H2 集成测试
查看>>
AIX 简单维护手册
查看>>
rtmfp、p2p聊天工具
查看>>
一次故障排查经过
查看>>
php环境变化引起的"syntax error unexpected $end"
查看>>
rpm包管理以及前端工具yum
查看>>
Perl 学习笔记
查看>>
我可能遇到了假的父母
查看>>
通过iscsi配置在aix上挂载存储设备
查看>>
旧IO(java.io.*)和新IO(java.nio.*)的主要区别
查看>>
String不可变类
查看>>
开发秘籍——单元测试的迷惑与思考
查看>>
运算符笔记
查看>>
安卓工业平板电脑的WIFI怎么样使用
查看>>
java 面向对象之多态
查看>>
linux设备驱动之中断处理
查看>>