C++Builder5.0調用SQLSERVER7.0驅動編程

來源:互聯網
上載者:User

C++builder5.0調用資料庫可以採用ODBC,OLE-DB,ADO.SQLSERVER7.0提供了一系列的編程介面。利用此介面的優點是dll中不需要放置資料群組件,充分利用sqlserver的驅動,同時在使用的用戶端電腦上比較方便的串連到遠端資料庫上。
  由於我對C++builder不是特別熟悉,作一個中介軟體的項目時,也是邊開發邊學習。錯誤之處請大家指正。我們一步一步的通過執行個體來學習。
  開啟C++builder5.0,建立一個DLL項目,按預設值即可。在標頭檔hos.h中加入以下語句.
  #ifdef  _BUILDING_THE_DLL
  #define  _EXPORT_TYPE  _export
  #else
  #define  _EXPORT_TYPE  _import
  #endif
  #define  MAX_LOGIN_TIME  5  //
  #define  MAX_EXEC_TIME  10  
  PDBPROCESS  dbproc;  //  The  connection  with  SQL  Server.  
  char  gl_dlmm_key1[]="000";
  char  gl_dlmm_key2[]="kle";  

//定義內建函式
  char  *CheckConnect(void);//暫時不用

//匯出函數
  extern  "C"  __declspec(dllexport)  int  Hosp_Connect(char  *pUid,char  *pPwd);
  extern  "C"  __declspec(dllexport)  int  Hosp_DisConnect(void);
匯出介面函數,其他的語言才能夠調用
  我們來看看hos.cpp檔案:
  #define  EVAL  
  #include  <vcl.h>
  #pragma  hdrstop
  #define  DBNTWIN32  //這是必須的
  #include  <stdio.h>
  #include  <stdlib.h>
  #include  <string.h>
  #include  <math.h>
  #include  <windows.h>
//在程式中用到的函數都在以下兩個標頭檔中定義
  #include  <sqlfront.h>   //sqlserver函數,包含在c++ builder中
  #include  <sqldb.h>     //

  #include  "hos.h"

  USERES("hos.res");
  USELIB("ntwdblib.lib");
  USELIB("hos.lib");  

  int  WINAPI  DllEntryPoint(HINSTANCE  hinst,  unsigned  long  reason,  void*  lpReserved)
  {
  return  1;
  }

//串連資料庫,參數為使用者名稱和口令.
  int  Hosp_Connect(char  *pUid,char  *pPwd)
  {
  int  result;
  AnsiString  asUser,asPass;

  PLOGINREC  login;  //  The  login  information.
  dbsetlogintime  (MAX_EXEC_TIME);
  for(int  i=0;i<2;i++)
  {
  dbinit  ();
  login  =  dblogin  ();
  #ifdef  EVAL
  DBSETLUSER  (login,  "sa");
  DBSETLPWD  (login,  "");
  DBSETLAPP  (login,  "應用程式名稱");
  dbproc  =  dbopen  (login,  "資料庫伺服器的IP地址");  
  #else
  asUser  =  AnsiString(pUid);
  if(i==0)
  asPass  =  AnsiString(pPwd)  +  AnsiString(gl_dlmm_key1);
  else
  asPass  =  AnsiString(pPwd)  +  AnsiString(gl_dlmm_key2);
  DBSETLUSER  (login,  asUser.c_str());
  DBSETLPWD  (login,  asPass.c_str());
  DBSETLAPP  (login,  "應用程式名稱");
  dbproc  =  dbopen  (login,  "資料庫伺服器的IP地址");  
  #endif

  if  (dbproc  !=  NULL)
  {
  result  =  1;
  break;
  }
  else
  {
  result  =  0;
  #ifdef  EVAL
  break;
  #endif
  }
  }
  return  result;
  }

  int  Hosp_DisConnect(void)
  {
  int  result;
  dbexit  ();
  result  =  1;
  return  result;
  }
未完待續,時間有些長了,我都忘記了,不好意思

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.