惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - 洛客

IOS SDK 兼容性 研究 中国地址的英文翻译 重构的概念 - 洛客 - 博客园 WCF RIA Services DomainService life-cycle and adding Transactions Silverlight 3 RIA服务编程中使用自定义方法及服务操作 HP大中华区总裁孙振耀退休感言 C#泛型 Session莫名丢失的原因及解决办法 商品條碼 让包装纸箱增加网店服务的附加值 男人30岁需要完成的事! 結婚照 我要结婚了 C#中如何实现对象拷贝 四舍五入 与 四舍六入五成双 网站优化——静态页面和动态页面的区别 - 洛客 网站优化—百度和google的一些优化特点 汕頭地方方言 Speed Up Your Site with the Improved View State in ASP.NET 2.0
在SQL Server 2005中实现 Server.UrlEncode、Server.UrlDecode
洛客 · 2009-03-22 · via 博客园 - 洛客

这个例子非常的简单,写这个例子的目的主要还是想让大家熟悉SQL 2005 CRL 函数的一个创建过程。

在网页传递变量,一般先编码,然后解码即可。在.net  实现这个功能,非常简单直接调用(微软已经处理完成了),

它的编码:

 String Message = Server.UrlEncode("欢迎学习ASP.NET!");
 Response.Redirect("WebForm2.aspx?Msg=" + Message);

它的解码:

 Label1.Text = Server.UrlDecode(Request.QueryString["Msg"]);

 如果在SQL 2000中实现这个方法,并不是件容易的事情,需要找到UrlEncode和UrlDecode原理,然后分析编码和解码字符串。(如果有兴趣,大家可以试试写下,网上看到SQL 2000实现的,都有问题。)

SQL 2005 实现过程:

如果我们用SQL 2005  实现这样的功能,那是非常的方便。下面介绍步骤。(由于截图比较直观,我以截图为主)

一:创建一个SQL Server 2005 数据库工程,如下图:

二:配置你需要把该CLR函数添加的数据库。如下图:

三:在SQL Project工程中添加函数,如下图:

四、由于我们在代码中要用到 System.Web.HttpUtility.UrlDecode 方法,而默认SQL Project工程下是找不到它的System.Web引用的,所以需要把System.Web引用添加在SQL 2005 中,它告诉我们如果我们在SQL 2005中找不到相关类库的引用,必须在SQL 2005 中先引用它的父程序集。此例如下图:

     

        五、此时我们在SQL Project 添加引用就可以找到System.Web了,如下图:

 

六、直接调用简单代码即可,如下图:

七、编译,生成后,在数据库添加创建的CLR程序集。如下图:

八、我们测试下创建的确CLR函数,如下图:

注意事项:

1、创建CLR程序集如果失败,需要开启CLR功能,默认数据库是不允许创建CLR的,还有就是更改数据库的信任模式,代码如下:

  1. --启用数据库CLR支持
  2. EXEC sp_configure 'show advanced options','1';
  3. go 
  4. reconfigure;
  5. go
  6. EXEC sp_configure 'clr enabled','1'
  7. go
  8. --更改数据库信任模式(为正确添加到程序集)
  9. Alter Database CSDN  SET TRUSTWORTHY ON
  10. GO

总结:

 该功能虽然只在数据库实现了Server.UrlEncode、Server.UrlDecode,但它告诉我们如何在SQL 2005调用.Net Framwork中的方法,来实现强大的数据库CLR功能。类似在SQL 2005 中很难实现的功能,参考上述办法,调用.Net Framwork提供的强大类库,就可以实现复杂的数据库功能。