C++Builder5.0呼叫SQLSERVER7.0驅動程式設計 (轉)
C++builder5.0可以採用OC,OLE-DB,ADO.SERVER7.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_Dinnect(void);
匯出介面函式,其他的語言才能夠呼叫
我們來看看hos.cpp檔案:
#define EVAL
#include
#pragma hdrstop
#define DBNT //這是必須的
#include
#include
#include
#include
#include <.h>
//在中用到的函式都在以下兩個標頭檔案中定義
#include
#include
#include "hos.h"
USERES("hos.res");
USELIB("ntwdblib.lib");
USELIB("hos.lib");
int WIN DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
//連線資料庫,引數為名和口令.
int Hosp_Connect(char *pUid,char *pPwd)
{
int result;
AnsiString asUser,ass;
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, "資料庫的");
#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;
}
未完待續,時間有些長了,我都忘記了,不好意思
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-956716/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux驅動程式設計(轉)Linux程式設計
- WDM驅動程式設計之設計開發篇 (轉)程式設計
- 程式設計模式-表驅動程式設計程式設計設計模式
- 事件驅動程式設計事件程式設計
- WDM驅動程式設計之編譯安裝篇 (轉)程式設計編譯
- 虛擬裝置驅動程式的設計與實現 (轉)
- 程式設計技巧之-表驅動法程式設計
- 驅動篇——核心程式設計基礎程式設計
- Android事件驅動程式設計(二)Android事件程式設計
- Android事件驅動程式設計(三)Android事件程式設計
- Android事件驅動程式設計(一)Android事件程式設計
- Linux裝置驅動程式設計之阻塞與非阻塞(轉)Linux程式設計
- Laravel最佳實踐–事件驅動程式設計Laravel事件程式設計
- Laravel 最佳實踐 -- 事件驅動程式設計Laravel事件程式設計
- Laravel最佳實踐 -- 事件驅動程式設計Laravel事件程式設計
- 領域驅動設計與模型驅動設計的關係模型
- 事件驅動的微服務-事件驅動設計事件微服務
- Linux核心模組程式設計--系統呼叫(轉)Linux程式設計
- 問題驅動設計與領域驅動設計的區別 - abdullin
- 領域驅動設計最佳實踐--程式碼篇
- 事件驅動及其設計模式事件設計模式
- 事件驅動架構設計事件架構
- 理解領域驅動設計
- MasaFramework -- 領域驅動設計Framework
- 領域驅動設計示例
- 領域驅動設計(DDD:Domain-Driven Design)轉AI
- Linux裝置驅動程式 (轉)Linux
- 關於領域驅動設計的函式程式設計思考 - Naveen Negi函式程式設計
- 模型驅動設計(MDD)之靈活設計模型
- 極限程式設計 vs 互動式設計 (轉)程式設計
- 虛擬裝置驅動程式(VxD)設計中的兩個關鍵問題 (轉)
- 請教:域驅動設計和模型驅動設計是什麼樣的關係模型
- 領域驅動設計簡介
- 實現領域驅動設計
- 資料驅動的介面設計
- 領域驅動設計核心概念
- 基於函數語言程式設計的領域驅動設計 - Scott Wlaschin函數程式設計
- DeviceDriver Windows NT 驅動程式型別 (轉載) (轉)devWindows型別