Linux下c++连接sql server FreeTDS配置笔记
最近做一个项目,需要在Linux下通过C++连接sql server 2005,这里列出FreeTDS配置笔记,以作分享和留存。
1. 编译安装FreeTDS
[root@localhost software]# tar zxvf freetds-stable.tgz
[root@localhost software]# cd freetds-0.82/
[root@localhost freetds-0.82]# ./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --enable-msdblib
[root@localhost freetds-0.82]# make && make install
[root@localhost freetds-0.82]# cd ../
2. 修改配置文件
在该文件添加如下内容:
host = 192.168.1.143
port = 1433
tds version = 8.0
client charset = UTF-8
3. 测试连接,如果出现1>则说明成功
locale is "zh_CN.UTF-8"
locale charset is "UTF-8"
1 >
2 >quit
4. 编写c++代码测试
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include </usr/local/freetds/include/sybfront.h>
#include </usr/local/freetds/include/sybdb.h>
int main(void)
{
//初始化db库
dbinit();
//设置数据库信息
LOGINREC *loginrec = dblogin();
DBSETLUSER(loginrec, "test");
DBSETLPWD(loginrec, "test");
// 设置UTF-8编码
DBSETLCHARSET(loginrec, "UTF-8");
//连接数据库
DBPROCESS *dbprocess = dbopen(loginrec, "192.168.1.147:1433");
if(dbprocess == FAIL)
{
printf("Connect fail\n");
return 0;
}
printf("Connect success\n");
//打开test数据库
if(dbuse(dbprocess, "test") == FAIL)
{
printf("Open database fail\n");
}
else
{
printf("Open database success\n");
}
//查询test表
dbcmd(dbprocess, "select id,test from test");
if(dbsqlexec(dbprocess) == FAIL)
{
printf("Query table error\n");
}
DBINT result_code;
char id[1024];
char value[1024];
while ((result_code = dbresults(dbprocess)) != NO_MORE_RESULTS){
if (result_code == SUCCEED){
dbbind(dbprocess, 1, CHARBIND, (DBINT)0, (BYTE*)id);
dbbind(dbprocess, 2, CHARBIND, (DBCHAR)0, (BYTE*)value);
while (dbnextrow(dbprocess) != NO_MORE_ROWS){
printf("id=%s\n", id);
printf("value=%s\n", id);
}
}
}
//关闭数据库连接
dbclose(dbprocess);
return 0;
}
5. 编译test.cc,注意编译前需要导入环境变量,否则会编译失败。
[root@localhost software]# g++ test.cc /usr/local/freetds/lib/libsybdb.so.5.0.0 -o test
[root@localhost software]# ./test
Connect success
Open database success
id=1
value=test
本站文章皆为原创,如需转载,请注明出处:http://blog.liubijian.com/linux_c_connect_sql_server_by_freetds.html和本站声明,谢谢!

