博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用C#写存储过程(VS.NET 2005)
阅读量:6226 次
发布时间:2019-06-21

本文共 1792 字,大约阅读时间需要 5 分钟。

hot3.png

SQL2005中内置CLR, 因此可以用更高级的托管语言编写SP, Trigger,Function....等 

下面是我用C#编写SP的过程:

环境: Win 2003 + SQL Server 2005 CTP(今年2月版本) +VS.NET 2005 CTP(今年2月版本)  +FW 2.0.50110      beta208013001_FyLx.jpg 

首先链接的数据库,新建一个SQL Server Project 
08013001_2cp8.jpg 
接下来会提示要链接的数据库对话框: 
08013002_hk4k.jpg 
如果要链接的数据库不在列表中,可以Add New,链接完数据库后将得到如下工程

08013002_CIaI.jpg 

添加一个StoredProcedure Item,目前支持的Item有: 
08013002_voVq.jpg

此时可以在数据库中添加一个表,如: table1,字段如下: 

08013002_Wuoa.jpg 
给刚才添加的 StoredProcedure Item 中添加如下代码,其中包括两个存储过程,和一个函数

08013002_YLQH.gif
using System; 
08013002_YLQH.gif
using System.Data; 
08013002_YLQH.gif
using System.Data.Sql; 
08013002_YLQH.gif
using System.Data.SqlServer; 
08013002_YLQH.gif
using System.Data.SqlTypes; 
08013002_YLQH.gif 
08013002_YLQH.gif 
08013002_YLQH.gif
public partial 
class StoredProcedures 
08013002_nVZK.gif
08013002_XvcM.gif    [SqlProcedure] 
08013002_XvcM.gif    
public 
static 
void Hello() 
08013002_WDug.gif    { 
08013002_XvcM.gif        SqlContext.GetPipe().Send("hello ,uGoer!"); 
08013002_PfX7.gif    } 
08013002_XvcM.gif 
08013002_XvcM.gif    [SqlProcedure] 
08013002_XvcM.gif    
public 
static 
void InsertData(SqlString name) 
08013002_WDug.gif    { 
08013002_XvcM.gif        SqlCommand InsertCurrencyCommand = SqlContext.GetCommand(); 
08013002_XvcM.gif        InsertCurrencyCommand.CommandText = "INSERT INTO table1 (Name, addDate) VALUES ('"+name.Value+"', '" + DateTime.Now.ToString() + "')"; 
08013002_XvcM.gif        InsertCurrencyCommand.ExecuteNonQuery(); 
08013002_PfX7.gif    } 
08013002_XvcM.gif 
08013002_XvcM.gif    [SqlFunction] 
08013002_XvcM.gif    
public 
static SqlString testFunction() 
08013002_WDug.gif    { 
08013002_XvcM.gif        
return "hello , cnBlogs.com"; 
08013002_PfX7.gif    } 
08013002_nObk.gif};
下一步就是编译部署用C#写的存储过程与函数,在目前的这个版本中VS.NET可以比较顺利的完成,步骤如下: 
选择build-->Deploy 工程名称 
部署完成以后再看看数据库吧,呵呵,刚才写的SP, Function都到里面去了 
08013002_RNIT.jpg
 
最后测试一下调用C#写的存储过程,在SQL Server Project建立后会自动建立Test Scripts文件夹并且包含Test.sql文件,工具MSDN的说法可以在里面直接写T-SQL进行测试,好,下面我们就看看,在Test.sql中添加如下数据: 
08013002_YLQH.gif
EXEC Hello 
08013002_YLQH.gif
EXEC InsertData 
'
ugoer
' 
08013002_YLQH.gif
EXEC InsertData 
'
cnBlogs
' 
08013002_YLQH.gif 
08013002_YLQH.gif
--
看看我们添加的数据
 
08013002_YLQH.gif
SELECT 
* 
FROM table1

然后在Debug下 开始 Start 嘿嘿,等等吧,VS 2005太吃内存了,建议512M的机子跑。 

看看我们得到了什么: 
08013002_YHFE.jpg 
哈哈,一切正常看来以后写 存储过程方便了,运用托管语言封装T-SQL,可以利用托管语言对数据的处理能力,比如数据库过滤,判断,循环,等等等 
另:如果Debug出现这样的提示:use sp_configure 'clr enabled',请先打开 clr enabled,方法如下: 

08013002_YLQH.gif
EXEC sp_configure 
'
show advanced options
'
1 
08013002_YLQH.gif
GO 
08013002_YLQH.gif
RECONFIGURE 
08013002_YLQH.gif
GO 
08013002_YLQH.gif 
   
EXEC sp_configure 
'
clr enabled
'
1 
08013002_YLQH.gif
GO 
08013002_YLQH.gif
RECONFIGURE 
08013002_YLQH.gif
GO 
08013002_YLQH.gif 
08013002_YLQH.gif

要关闭clr enabled,可以使用

08013002_YLQH.gif
EXEC sp_configure 
'
clr enabled
'
0 
08013002_YLQH.gif
GO 
08013002_YLQH.gif
RECONFIGURE 
08013002_YLQH.gif
GO 
08013002_YLQH.gif

转载于:https://my.oschina.net/bv10000/blog/143057

你可能感兴趣的文章
c++ 快速排序
查看>>
Linux下删除命令 硬盘空间查看... 常用命令
查看>>
从客户端中检测到有潜在危险的 Request.Form 值
查看>>
Node.js制作爬取简书内容的爬虫
查看>>
编辑器之神-vim
查看>>
highcharts 柱形堆叠图
查看>>
在vue2.x中安装sass并配置
查看>>
密钥分散算法
查看>>
Django ORM字段和字段参数
查看>>
HDU-6170 Two strings
查看>>
URL和URI
查看>>
3.12DAYUP
查看>>
算法10-----分糖果
查看>>
zoj 1009
查看>>
STL之迭代器
查看>>
kubernetes删除pod失败
查看>>
防盗链之URL参数签名 总结
查看>>
中间件和上下文处理器、djangoAdmin
查看>>
grunt入门讲解1:grunt的基本概念和使用
查看>>
网页内连续英文或符号时 强制折行与不折行的解决方案
查看>>