免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1527 | 回复: 0

freeTDS试用体会 [复制链接]

论坛徽章:
0
发表于 2004-04-23 16:53 |显示全部楼层
56、        由于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]='\0';
printf("\nuser name=%s\n", cValue);
                        }
                }
        }

}

编译:
头文件自动安装在/usr/include目录下,库文件自动安装在/usr/lib/目录下

cc  -I. -I/usr/include TestFreeTDS.c  /usr/lib/libsybdb.a -lm -o t_sql  -lpthread

运行./t_sql即可大功告成。
以此文起到抛砖引玉作用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP