linux下连接MSSQL,使用freetds的问题

发布于 2022-06-18 04:17:29 字数 68 浏览 15 评论 1

1,请问freetds可以向表中插入数据和更新,删除数据的功能吗
2,哪位gg开发过这样的程序,能否给俺份拜读下,急等,谢谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

伴我心暖 2022-06-25 17:00:40

本人原发表在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即可大功告成。
以此文起到抛砖引玉作用。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文