MingW下安装FreeTDS:

$ tar -xvzf /c/mingw/download/freetds-stable.tgz

$ cd freetds-0.91

$ ./configure --disable-libiconv --with-tdsver=7.1 --enable-msdblib --disable-shared --enable-static

$ make

$ make install

注意:

-with-tdsver=7.1中的7.1是目前最大版本,不能设置为8.0、9.0之类,否则将不能连接到SQL Server。比如,我设置为9.0,连接SQL Server 2008 R2就失败了。

MingW下测试FreeTDS代码:

 

  1. #include <stdio.h>  
  2. #include <sybdb.h>  
  3.   
  4. // 编译:  
  5. // gcc test.c -o testdb -L/local/lib/ -I/local/include -lsybdb -lws2_32 
  6. int main(int argc, char **argv)  
  7. {          
  8.     //初始化db库 
  9.     dbinit(); 
  10.     //设置数据库信息 
  11.     LOGINREC *loginrec = dblogin(); 
  12.     DBSETLUSER(loginrec, "user"); 
  13.     DBSETLPWD(loginrec, "password*"); 
  14.     // 设置UTF-8编码 
  15.     DBSETLCHARSET(loginrec, "UTF-8"); 
  16.     //连接数据库 
  17.     DBPROCESS *dbprocess = dbopen(loginrec, "192.168.0.123:1433"); 
  18.     if(dbprocess == FAIL) 
  19.     { 
  20.         printf("Connect fail\n"); 
  21.         return 0; 
  22.     } 
  23.      
  24.     printf("Connect success\n"); 
  25.      
  26.     //打开test数据库 
  27.     if(dbuse(dbprocess, "test") == FAIL) 
  28.     { 
  29.         printf("Open database fail\n"); 
  30.     } 
  31.     else 
  32.     { 
  33.         printf("Open database success\n"); 
  34.     } 
  35.      
  36.     //查询test表 
  37.     dbcmd(dbprocess, "select id, name from test"); 
  38.     if(dbsqlexec(dbprocess) == FAIL) 
  39.     { 
  40.         printf("Query table error\n"); 
  41.     } 
  42.      
  43.     DBINT result_code; 
  44.     char id[1024]={0}; 
  45.     char value[1024]={0}; 
  46.     while ((result_code = dbresults(dbprocess)) != NO_MORE_RESULTS){ 
  47.         if (result_code == SUCCEED){ 
  48.             dbbind(dbprocess, 1, CHARBIND, (DBINT)0, (BYTE*)id); 
  49.             dbbind(dbprocess, 2, CHARBIND, (DBCHAR)0, (BYTE*)value); 
  50.             while (dbnextrow(dbprocess) != NO_MORE_ROWS){ 
  51.                 printf("id=%s\n", id); 
  52.                 printf("value=%s\n", value); 
  53.             } 
  54.         } 
  55.     } 
  56.     //关闭数据库连接 
  57.     dbclose(dbprocess); 
  58.     return 0;