国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

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

2019-11-17 05:43:51
字體:
來源:轉載
供稿:網友

  本文參考文章:
md5 Hash SQL Server Extended Stored PRocedure
作者: Vic Mackey
文章鏈接: http://www.codeproject.com/database/XP_md5.asp
原文是用 Visual C++ 編的程序, 本文的程序是原文的程序修改成的 C++ Builder 程序。

--------------------------------------------------------------------------------
這個存儲過程是計算 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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 额济纳旗| 阜新市| 柘城县| 炎陵县| 敖汉旗| 永新县| 改则县| 岑溪市| 旌德县| 莆田市| 边坝县| 崇阳县| 芒康县| 台东市| 托克托县| 博兴县| 阳朔县| 醴陵市| 景德镇市| 西藏| 射洪县| 东阿县| 镇坪县| 万宁市| 天镇县| 聂荣县| 宝山区| 仪陇县| 贡山| 太湖县| 九龙坡区| 呼玛县| 安达市| 绥江县| 德昌县| 大庆市| 台东县| 忻州市| 工布江达县| 晋宁县| 府谷县|