記錄一下Linux下使用C語言連接sqlserver的方法。
連接前需要安裝freetds。
參考:
http://www.cnblogs.com/helloworldtoyou/p/6910075.html
http://blog.csdn.net/neighbor1000/article/details/8824084
http://blog.csdn.net/pinkbean/article/details/64439759
這個是從參考鏈接中的提取代碼。分析一下,寫上注釋。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
#include<sybfront.h>
#include<sybdb.h>
int main(void)
{
char szUsername[32]= "Tony";
char szPassword[32]= "tony";
char szDBName[32]= "gpio";
char szServer[32]= "192.168.1.221:1433"; //服務器ip地址和端口號
//初始化db-library
dbinit();
//連接數據庫
LOGINREC *loginrec=dblogin();
// 設置登錄的用戶名
DBSETLUSER(loginrec,szUsername);
// 設置登錄密碼
DBSETLPWD(loginrec,szPassword);
// 連接sqlserver服務器地址和端口號,這里才是連接
DBPROCESS *dbprocess=dbopen(loginrec,szServer);
if(dbprocess==FAIL){
printf("Connect MSSQLSERVER fail\n");
return 0;
}else{
printf("Connect MSSQLSERVER success\n");
}
// 連接數據庫
if(dbuse(dbprocess,szDBName)==FAIL){
printf("Open data basename fail\n");
}else{
printf("Open data basename success\n");
}
// 查詢數據庫中表中的內容
dbcmd(dbprocess,"select * from real_date_log"); //查詢數據表中的內容,更具實際情況更改數據表名稱
// 執行命令
if(dbsqlexec(dbprocess)==FAIL){
printf("Query table error\n");
}
else
printf("Query table success\n");
DBINT result_code;
char szID[1024];
char szBeginTime[1024];
char szDescription[1024];
// 查看命令執行的結果。
while((result_code=dbresults(dbprocess))!=NO_MORE_RESULTS)
{
if(result_code==SUCCEED){
// 查詢第1列
dbbind(dbprocess,1,CHARBIND,(DBINT)0,(BYTE*)szID);
// 查詢第2列
dbbind(dbprocess,2,CHARBIND,(DBCHAR)0,(BYTE*)szBeginTime);
// 查詢第3列
dbbind(dbprocess,3,CHARBIND,(DBCHAR)0,(BYTE*)szDescription);
// 跳到下一行
while(dbnextrow(dbprocess)!=NO_MORE_ROWS){
// 打印本行的數據
printf("ID=%s\n",szID);
printf("szAid=%s\n",szBeginTime);
printf("szBeginTime=%s\n",szDescription);
}
}
}
//關閉數據庫連接
dbclose(dbprocess);
return 0;
}
編譯
gcc -o testsybase testsybase.c -L /usr/local/freetds7.0/lib/ -lsybdb -I /usr/local/freetds7.0/include/
執行
export LD_LIBRARY_PATH=/usr/local/freetds7.0/lib/
./testsybase
Tony Liu
2017-5-26, Shenzhen