1. 程式人生 > >如何使用linux連線外部windows上的資料庫記錄

如何使用linux連線外部windows上的資料庫記錄

1 去freetds官網下載最新版本的freetds,注意版本號,一般2008版本的就寫7.3,2014或者2012寫7.4,再往前的資料庫就不好使了,具體安裝步驟不再說明,然後說一下連結程式碼:

#include<stdio.h> #include<string.h> #include<stdlib.h> #include<unistd.h> #include<sybfront.h>                   //frertds中的檔案,找不到則路徑尋找/usr/... #include<sybdb.h>                      //freetds的檔案,如上 int main(void) {    char szUsername[32]="sa";          //使用者名稱      char szPassword[32]="123456789";   //去sql server 2012中自己填寫      char szDBName[32]="test";               //叫text的資料庫名字      char szServer[32]=" 192.168.4.40:1433"; //資料庫的伺服器埠      dbinit();                        //初始化      //連線模組      LOGINREC *loginrec=dblogin();      //連線    其中Dblogin是根據使用者名稱和密碼連線資料庫      DBSETLUSER(loginrec,szUsername);          DBSETLPWD(loginrec,szPassword);      DBPROCESS *dbprocess=dbopen(loginrec,szServer); //開啟資料庫    if(dbprocess==FAIL)           //測試是否連線成功      {      printf("connect SQL Server fail\n");       return -1;      }      else      printf("connect success\n");     //開啟模組     if(dbuse(dbprocess,szDBName)==FAIL)  //是否能夠開啟資料庫       printf("open database fail\n");     else        printf("open database success\n");        //查詢模組        printf("查詢資料庫表");        dbcmd(dbprocess,"select StuID,Name,Age from Stulnfo");//查詢表格並測試是否成功        if(dbsqlexec(dbprocess)==FAIL)        {        printf("chaxun table error")        return -1;        }        DBINT result_code;        char szStuID[20]={};        char szName[80]={};        char szAge[10]={};        int rows=0;        while((result_code=dbresults(dprocess))!=NO_MORE_RESULTS)    {        if(result_code==SUCCEED)     {        dbbind(dbprocess,1,CHARBIND,(DBINT)0,(BYTE*)szStuID);        dbbind(dbprocess,2,CHARBIND,(DBCHAR)0,(BYTE*)szName);        dbbind(dbprocess,3,CHARBIND,(DBCHAR)0,(BYTE*)szAge);        printf("StuID\Name\tAge\n",szStuID);        while(dbnextrow(dbprocess)!=NO_MORE_ROWS)          {           printf("%s\t",szStuID);           printf("%s\t",szName);           printf("%s\n",szAge);       }                                    }                                  }                  //插入模組                printf("往資料庫表中插入資料\n");     dbcmd(dbprocess,"insert into Stulnfo(StuID,Name,Age)values(888,'heheda',24)");      if(dbsqlexec(dbprocess)==FAIL)            //判定插入的資料是否成功      {      printf("insert into table'Stulnfo'error.\n");      return -1;      }                          else        print("insert into table 'Stulnfo' success.\n");          //刪除模組      printf("刪除記錄\n");       dbcmd(dbprocess,"dele form Stulnfo where StuID=888");      if(dbsqlexec(dbprocess)==FAIL)      {         printf("delete 'Stulnfo' error.\n");      return -1;      }      else      printf("delete 'Stulnfo' success.\n");        //關閉      dbclose(dbprocess);      return 0;       }