程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 使用freetds庫連接MS SQL SERVER實現方法

使用freetds庫連接MS SQL SERVER實現方法

編輯:關於SqlServer


  1   概述

  在Linux下連接MSSQL是一件很痛苦的事,因為微軟同志沒有提供任何接口給開發人員,還好,MSSQL是從Sybase衍生出來的,FreeTDS是一個數據庫底層的驅動程序,用freetds的庫進行開發是一件很方便的事。freetds可以連接Sybase和mssqlserver數據庫。

  2   安裝,配置,測試

  官方網站:http://www.freetds.org

  版本:0.64

$tar-zxvffreetds-stable.tgz
$./configure--prefix=/usr/local/freetds
$make
$suroot
$makeinstall
$tsql-H2.2.2.2-p1433-Utest-Ptest

  tsql說明:

  H:數據庫IP

  p:數據庫端口

  U:用戶名

  P:密碼

  3   Linux下C/C++開發

  3.1  利用freetds自帶的程序開發

  位置在freetds-0.64/src/aPPS

  $makeclean

  $make

  3.2  利用freetds庫快速開發

testSybase.c
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h> 
#include<sybfront.h>
#include<sybdb.h>
intmain(void)
{
   charszUsername[32]="test";
   charszPassWord[32]="test";
   charszDBName[32]="test";
   charszServer[32]="2.2.2.2:1433";
   //初始化db-library
   dbinit();
   //連接數據庫
   LOGINREC*loginrec=dblogin();
   DBSETLUSER(loginrec,szUsername);    
   DBSETLPWD(loginrec,szPassWord);
   DBPROCESS*dbprocess=dbopen(loginrec,szServer);
   if(dbprocess==FAIL){
       printf("ASB>>   ConectMSSQLSERVERfail   n");
       return0;
}else{
       printf("ASB>>   ConnectEMSconectMSSQLSERVERsuccessn");
   }
   if(dbuse(dbprocess,szDBName)==FAIL){
       printf("ASB>>   Opendatabasenamefailn");
   }else{
       printf("ASB>>   Opendatabasenamesuccessn");
   }
   //查詢數據庫
   dbcmd(dbprocess,"selectID,BeginTime,DescriptionfromAlarms");
   if(dbsqlexec(dbprocess)==FAIL){
       printf("ASB>>   QueryAlarmstableerrorn");   
   }
   DBINTresult_code;
   charszID[1024];
   charszBeginTime[1024];
   charszDescription[1024];
   introws=0;
   while((result_code=dbresults(dbprocess))!=NO_MORE_RESULTS){
       if(result_code==SUCCEED){
          dbbind(dbprocess,1,CHARBIND,(DBINT)0,(BYTE*)szID);
          dbbind(dbprocess,2,CHARBIND,(DBCHAR)0,(BYTE*)szBeginTime);
          dbbind(dbprocess,3,CHARBIND,(DBCHAR)0,(BYTE*)szDescription);
while(dbnextrow(dbprocess)!=NO_MORE_ROWS){            
              printf("ASB>>      ID=%sn",szID);
              printf("ASB>>      szAid=%sn",szBeginTime);
              printf("ASB>>      szBeginTime=%sn",szDescription);
          }
       }
   }
   //關閉數據庫連接
   dbclose(dbprocess);
   return0;
}

  編譯:gcc-otestsybasetestSybase.c./src/dblib/.libs/libsybdb.a

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved