linux下连接MSSQL,使用freetds的问题
1,请问freetds可以向表中插入数据和更新,删除数据的功能吗
2,哪位gg开发过这样的程序,能否给俺份拜读下,急等,谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
1,请问freetds可以向表中插入数据和更新,删除数据的功能吗
2,哪位gg开发过这样的程序,能否给俺份拜读下,急等,谢谢
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
本人原发表在sybase版,望对你有帮助
由于sybase不能很好的支持redhat9
以前在下面用db-library写的应用程序不能在redhat9上编译通过。
前几日在windflowers1976 侠客的提醒下,使用了freeTDS初步感觉很好。
现将试用情况总结如下:[希望以后的侠客们都这样整理一下,对新手很有好处]
开发环境redhat9 linux
不需要装sybase的openclient
只装下列两个rpm包即可。
下载freeTDS:
http://sunsite.rediris.es/sites2/ibiblio.org/linux/ALPHA/freetds/stable/redhat/
就可以下载到
freetds-0.62.1-1.i586.rpm
freetds-devel-0.62.1-1.i586.rpm
用
rpm –ivh freetds-0.62.1-1.i586.rpm
freetds-devel-0.62.1-1.i586.rpm
然后编辑/etc/freetds.conf文件
[数据库所在主机名]
host =数据库所在主机名
port = 端口号
端口号定义是sybase中interfaces定义好的port/ ms-sqlserver为1433
例子:
[host_sybase]
host = host_sybase
port = 4100
[host_mssqlserver]
host = host_mssqlserver
port = 1433
测试是否配置正确
tsql –S 数据库所在主机名 –U 用户
例如:
tsql –S host_Sybase –U sa
提示输入口令如果连接正确则会出现1>;
至此环境已搭建好可以编程了。
我用db-library测试的。
在连接数据库前加上dbinit()其余皆同sybase的db-library一样。
注意dbbind()函数时其中的一个参数由(BYTES DBFAR *)改为(BYTES *)即可,见下例子:
TestFreeTDS.c
#include <stdio.h>;
#include <sybfront.h>;
#include <sybdb.h>;
main(argc,argv)
int argc;
char *argv[];
{
LOGINREC *Ldblogin;
DBPROCESS *dbproc;
int iRetCode=0;
RETCODE return_code,n_ret_code;
char cValue[120];
DBINT iColLength=0;
DBINT iRet;
DBINT result_code;
int i=0;
memset(cValue, 0, sizeof cValue);
//初始化db-library
;
;
;
;
dbinit();
//连接数据库
Ldblogin = dblogin();
DBSETLUSER(Ldblogin, "sa"
DBSETLPWD(Ldblogin, "test"
DBSETLAPP(Ldblogin, "Leon-test"
dbproc = dbopen(Ldblogin, "host_sybase"
dbcmd(dbproc, "select name from test"
;
dbsqlexec(dbproc);
while ((result_code = dbresults(dbproc)) != NO_MORE_RESULTS)
{
if (result_code == SUCCEED)
{
memset(cValue, 0, sizeof cValue);
dbbind(dbproc, 1, CHARBIND, (DBINT)0, (BYTE *) cValue);
while (dbnextrow(dbproc) != NO_MORE_ROWS)
{
i++;
iColLength = dbdatlen(dbproc, 1);
cValue [iColLength]='';
printf("nuser name=%sn", cValue);
}
}
}
}
编译:
头文件自动安装在/usr/include目录下,库文件自动安装在/usr/lib/目录下
cc -I. -I/usr/include TestFreeTDS.c /usr/lib/libsybdb.a -lm -o t_sql -lpthread
运行./t_sql即可大功告成。
以此文起到抛砖引玉作用。