C++中用BCB编SQL Server2000的扩展存储过程
发表日期:2008-3-8
本文参考文章:md5 Hash SQL Server Extended Stored PR ocedure 作者: 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
ASP教程
ASP实例
ASP技巧
ASP文摘
PHP教程
PHP技巧
PHP实例
PHP文摘
JSP教程
JSP技巧
JSP实例
JSP文摘
ASP.NET教程
ASP.NET技巧
ASP.NET实例
ASP.NET应用
xml教程
xsl教程
xml技巧
C#教程
C#应用
Delphi教程
Perl教程
Shell教程
Ajax教程
Visual Basic教程
Java教程
J2EE/J2ME教程
C/C++教程
移动解决方案
移动短信技术
移动行业动态
软件工程
WordPress
Android开发