linux connect mssqlserver

let the linux programm connect to mssqlserver, install the third library - freetds.
here are the steps to make it work, don't ask why, just have a try.

 

1,setup unixODBC
./configure --prefix=/user/local/unixODBC
make
make install

 

2,setup freetds
./configure --prefix=/user/local/freetds --with-unixodbc=/user/local/unixODBC --with-tdsver=8.0 --enable-gui=no --enable-msdblib
make
make install

 

3,configure freetds
vi etc/freetds.conf
 [MyServer2k5]
 host = 192.168.90.5
 port = 1433
 tds version = 8.0
 client charset = GBK

 

./freetds/bin/tsql -S MyServer2k5 -H 192.168.90.5 -p 1433 -U sa -P 123456
./freetds/bin/tsql -S MyServer2k5 -U sa -P 123456 -D test

 

4,configure unixODBC
vi etc/odbcinst.ini
 [TDS]
 Description = MS-SQL Server
 Driver = /user/local/freetds/lib/libtdsodbc.so
 Setup = /user/local/freetds/lib/libtds.so
 FileUsage = 1

 

vi etc/odbc.ini
 [test];DSN
 Driver = TDS
 Servername = MyServer2k5
 Server = 192.168.90.5
 Database = test
 Port = 1433
 Socket =
 Option =
 Stmt =

 

vi /root/.odbc.ini
 [test]
 Driver = TDS
 Servername = MyServer2k5
 Server = 192.168.90.5
 Database = test
 Port = 1433
 
./unixODBC/bin/isql -v test sa 123456

 

 

code come last...

#include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include </user/local/freetds/include/sybfront.h> #include </user/local/freetds/include/sybdb.h> int main(void) { char szUsername[32] = "sa"; char szPassword[32] = "123456"; char szDBName[32] = "test"; char szServer[32] = "192.168.90.5:1433"; dbinit(); LOGINREC *loginrec = dblogin(); DBSETLUSER(loginrec, szUsername); DBSETLPWD(loginrec, szPassword); DBSETLCHARSET(loginrec,"GBK"); DBPROCESS *dbprocess = dbopen(loginrec, szServer); if(dbprocess == FAIL) { printf("connect fail/n"); return 0; } printf("conect success/n"); if(dbuse(dbprocess, szDBName) == FAIL) { printf("Open database fail/n"); } else { printf("Open database success/n"); } dbcmd(dbprocess, "select * from table1"); if(dbsqlexec(dbprocess) == FAIL) { printf("Query table error/n"); } DBINT result_code; char szID[1024]={0}; char szName[1024]={0}; int rows = 0; while ((result_code = dbresults(dbprocess)) != NO_MORE_RESULTS){ if (result_code == SUCCEED){ memset(szID,0,1024); memset(szName,0,1024); dbbind(dbprocess, 1, CHARBIND, (DBINT)0, (BYTE*)szID); dbbind(dbprocess, 2, CHARBIND, (DBCHAR)0, (BYTE*)szName); while (dbnextrow(dbprocess) != NO_MORE_ROWS){ printf("ID=%s/t", szID); printf("Name=%s/n", szName); memset(szID,0,1024); memset(szName,0,1024); } } } dbclose(dbprocess); return 0; }

你可能感兴趣的:(linux connect mssqlserver)