体验:用C#写存储过程(VS.NET 2005)

本文介绍了在SQL2005中使用C#编写存储过程的过程。环境为Win 2003、SQL Server 2005 CTP、VS.NET 2005 CTP和FW 2.0.50110 beta2。详细说明了链接数据库、新建项目、添加存储过程项、编写代码等步骤,还提及了Debug时的相关问题及解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL2005中内置CLR, 因此可以用更高级的托管语言编写SP, Trigger,Function....等
下面是我用C#编写SP的过程:

环境: Win 2003 + SQL Server 2005 CTP(今年2月版本) +VS.NET 2005 CTP(今年2月版本)  +FW 2.0.50110      beta2%7B79EC554B-78E9-47B8-B5A2-62E4955320AE%7D0.jpg

首先接上一篇链接的数据库,新建一个SQL Server Project
%7B5E981B2D-2872-4B41-B3EF-3C7BA7733179%7D0.jpg

接下来会提示要链接的数据库对话框:
%7B82D5A3DF-D6D8-4D5C-8E1F-AB6FC0623872%7D0.jpg
如果要链接的数据库不在列表中,可以Add New,链接完数据库后将得到如下工程

%7B3D5BCC85-0540-4A5B-BEBD-4509DF403DFE%7D0.jpg
添加一个StoredProcedure Item,目前支持的Item有:
%7B2D91C10B-712E-46F7-9443-8181AC906FB7%7D0.jpg

此时可以在数据库中添加一个表,如: table1,字段如下:
%7B63D0509C-A9E0-4D02-8684-765C96FBC118%7D0.jpg

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

None.gif using  System;
None.gif
using  System.Data;
None.gif
using  System.Data.Sql;
None.gif
using  System.Data.SqlServer;
None.gif
using  System.Data.SqlTypes;
None.gif
None.gif
None.gif
public  partial  class  StoredProcedures
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    [SqlProcedure]
InBlock.gif    
public static void Hello()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        SqlContext.GetPipe().Send(
"hello ,uGoer!");
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    [SqlProcedure]
InBlock.gif    
public static void InsertData(SqlString name)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        SqlCommand InsertCurrencyCommand 
= SqlContext.GetCommand();
InBlock.gif        InsertCurrencyCommand.CommandText 
= "INSERT INTO table1 (Name, addDate) VALUES ('"+name.Value+"', '" + DateTime.Now.ToString() + "')";
InBlock.gif        InsertCurrencyCommand.ExecuteNonQuery();
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    [SqlFunction]
InBlock.gif    
public static SqlString testFunction()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
return "hello , cnBlogs.com";
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}
;

下一步就是编译部署用C#写的存储过程与函数,在目前的这个版本中VS.NET可以比较顺利的完成,步骤如下:
选择build-->Deploy 工程名称
部署完成以后再看看数据库吧,呵呵,刚才写的SP, Function都到里面去了
%7B2CC3B286-224E-414A-9538-CFB549808A93%7D0.jpg

最后测试一下调用C#写的存储过程,在SQL Server Project建立后会自动建立Test Scripts文件夹并且包含Test.sql文件,工具MSDN的说法可以在里面直接写T-SQL进行测试,好,下面我们就看看,在Test.sql中添加如下数据:
None.gif EXEC  Hello
None.gif
EXEC  InsertData  ' ugoer '
None.gif
EXEC  InsertData  ' cnBlogs '
None.gif
None.gif
-- 看看我们添加的数据
None.gif
SELECT   *   FROM  table1

然后在Debug下 开始 Start 嘿嘿,等等吧,VS 2005太吃内存了,建议512M的机子跑。
看看我们得到了什么:
%7B1CF9E7BF-881B-422D-9F58-D423B511AF41%7D0.jpg
哈哈,一切正常看来以后写 存储过程方便了,运用托管语言封装T-SQL,可以利用托管语言对数据的处理能力,比如数据库过滤,判断,循环,等等等


另:如果Debug出现这样的提示:use sp_configure 'clr enabled',请先打开 clr enabled,方法如下:

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

要关闭clr enabled,可以使用

None.gif EXEC  sp_configure  ' clr enabled ' 0
None.gif
GO
None.gif
RECONFIGURE
None.gif
GO
None.gif

[转载请注明,写东西真的很辛苦的]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值