程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 用BCB編SQL Server2000的擴展存儲過程

用BCB編SQL Server2000的擴展存儲過程

編輯:關於C++

這個存儲過程是計算 MD5 值的,可以用來進行密碼認證加密等。

SQL Server 的擴展存儲過程 (Extended Stored Procedure, 簡稱 XP) 是通過在 MSSQL 數據庫注冊封裝在 .dll 裡面的函數實現的,

而這個 .dll 應該按照 M$ 提供的規則, 並且要連接 MSSQL 的庫文件。由於 C++ Builder 自帶的 MSSQL 庫文件 OPENDS60.LIB 比較舊,

本文提供新版本的 OPENDS60.LIB 庫文件, 支持 MSSQL 2000 版本的。

--------------------------------------------------------------------------------

【安裝方法】

① 通過執行 SQL 語句注冊存儲過程:

打開 Master 數據庫,然後執行下面 SQL 語句

EXEC sp_addextendedproc 'xp_md5', 'd:\pathname\xp_md5.dll'

如果注冊的文件不包含路徑,只有文件名,MSSQL會在這個文件夾裡面找這個.dll

C:\Program Files\Microsoft SQL Server\MSSQL\Binn

② 創建用來支持 select 語句的 MD5 函數 fn_md5

打開想要執行這個存儲過程的用戶數據庫,執行下面的 SQL:

CREATE FUNCTION fn_md5 (@string VARCHAR(8000))
RETURNS CHAR(32) AS
BEGIN
  DECLARE @hash CHAR(32)
  EXEC master.dbo.xp_md5 @string, @hash OUTPUT
  RETURN @hash
END

【使用方法】

① 直接執行, 由於 xp_md5 在 master 數據庫裡面, 所以前面必須有 master.

EXEC master.dbo.xp_md5 'Hello world!'

② 通過 fn_md5 支持 select 語句, 這個函數在用戶當前使用的數據庫裡面.

SELECT dbo.fn_md5('Hello world!')

【程序說明】

xp_md5.bpr   存儲過程 C++ Builder 6.0 工程文件

OPENDS60.LIB  由於 C++ Builder 自帶的文件比較舊,支持 MSSQL 7 的,這個程序帶了一個 OPENDS60.LIB 文件,支持 MSSQL 2000

md5.h      Christophe Devine 原作,沒做任何修改

md5.cpp     Christophe Devine 原作,沒做任何修改

xp_md5_main.cpp 存儲過程主程序文件,根據 Vic Mackey 的存儲過程修改的

在創建工程的時候用 DLL 向導生成就可以了,沒有特殊的要求,存儲過程函數需要按規定的格式:

__declspec(dllexport) SRVRETCODE WINAPI xpname(SRV_PROC* pSrvProc)

其中 xpname 是存儲過程的名,其他的都是規定的格式不能變

另外存儲過程 .dll 文件也必須包含這個函數:

__declspec(dllexport) ULONG WINAPI __GetXpVersion()

詳細的內容請下載源程序看,比較簡單。

函數的說明請參閱 MSDN 的這裡:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odssql/ods_6_ref_02_8k2t.asp

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