电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 网站运营-> 网站运营
运用.NET+SQL Server2005构建多层网站(2)-.NET教程,数据库应用
作者:网友供稿 点击:88
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
sql server 2005的一大新特性便是整合了.net 的clr。整合了.net clr的好处在于,可以很方便地使开发者可以使用自己熟悉的.net 语言来创建存储过程,触发器,自定义函数等。在本文中,将以c#来创建存储过程。为什么不用t-sql来创建存储过程呢?因为t-sql发展到目前,已经很长时间了,在某些场合有其局限性,比如t-sql不是面向对象的,某些语法过于复杂等。而如果使用面向对象的.net 语言来编写如存储过程等数据对象时,由于.net 语言强大的特性,因此能写出更健壮和更优秀的存储过程。

注意,通过sql server 2005用.net编写的存储过程,都是和用.net语言编写一般应用的程序一样,都是managed code。此外,clr 编程语言提供了 t-sql 中所没有的丰富构造(例如数组和列表等)。与 t-sql(它是一种解释语言)相比,clr 编程语言之所以具有更好的性能,是因为托管代码是已编译的。对于涉及算术计算、字符串处理、条件逻辑等的操作,托管代码的性能可能要优于 t-sql 一个数量级。在本文中,虽然可以用t-sql来编写存储过程,但为了说明问题,还是以c#来写存储过程。步骤如下:

  首先,打开visual studio 2005 beta 2,选择c#语言,新建立一个database工程,命名为sqlproject1。此时,visual studio 2005 beta 2会询问你,要与什么数据库进行关联。由于我们采用的是pubs这个数据库,因此我们选择机器名是本地机器,设置好sql的验证方式,选择pubs数据库,就可以了。(注意,在sql server 2005中,pubs和northwind数据库不再是sql server 2005的自带数据库了,需要http://go.microsoft.com/fwlink/?linkid=31995去下载)。

接着,在工程建立完毕后,选择新增项目,选择store procedure存储过程,并以authors.cs命名,再按确定,并输入以下代码:

using system;
using system.data;
using system.data.sql;
using system.data.sqltypes;
using microsoft.sqlserver.server;
using system.data.sqlclient;

public partial class storedprocedures
{
 [microsoft.sqlserver.server.sqlprocedure]

 public static void getauthors()
 {
  sqlpipe sp = sqlcontext.pipe;
  using (sqlconnection conn = new sqlconnection("context connection=true"))
  {
   conn.open();
   sqlcommand cmd = new sqlcommand();
   cmd.commandtype = commandtype.text;
   cmd.connection = conn;
   cmd.commandtext = "select datepart(second, getdate()) " + " as timestamp,* from authors";
   sqldatareader rdr = cmd.executereader();
   sp.send(rdr);
  }
 }

 [sqlprocedure]

 public static void gettitlesbyauthor(string authorid)
 {
  string sql = "select t.title, t.price, t.type, " + "t.pubdate from authors a" +
     " inner join titleauthor ta on a.au_id = ta.au_id " +
     " inner join titles t on ta.title_id = t.title_id " +
     " where a.au_id = ’" + @authorid + "’";
  using (sqlconnection conn = new sqlconnection("context connection=true"))
  {
   conn.open();
   sqlpipe sp = sqlcontext.pipe;
   sqlcommand cmd = new sqlcommand();
   cmd.commandtype = commandtype.text;
   cmd.connection = conn;
   cmd.commandtext = sql;
   sqlparameter paramauthorid = new sqlparameter("@authorid", sqldbtype.varchar, 11);
   paramauthorid.direction = parameterdirection.input;
   paramauthorid.value = authorid;
   cmd.parameters.add(paramauthorid);
   sqldatareader rdr = cmd.executereader();
   sp.send(rdr);
  }
 }
}




  让我们来看上面的代码。首先声明了authors类,并且要引入system.data.sql;,system.data.sqltypes;,microsoft.sqlserver.server; system.data.sqlclient等命名空间。其中,在microsoft.sqlserver.server命名空间中,有两个十分重要的类:



  ·sqlcontext: 一个sqlcontext类包含的方法可以取得一个数据库实例连接、命令,事务等。



  ·sqlpine: 用户实现发送查询结果和消息到客户端,和ado.net里面的response类有很多相似之处。



  在authors类中包含了两个静态方法,分别是getauthors和gettitlesbyauthor。其中,getauthors方法返回pubs数据库中authors表的所有数据,而gettitlesbyauthor,则返回指定作者的所写的图书。



  在getauthors方法中,首先通过调用sqlcontext类的pipe属性引用sqlpine对象:



sqlpipe sp = sqlcontext.pipe;



  接着,使用sqlconnection对象连接到数据库。注意,在连接数据库的字符串中,使用"context=true",表示使用已经登陆到数据库的用户进行登陆:



using (sqlconnection conn = new sqlconnection("context connection=true"))
conn.open();




  再创建sqlcommand对象的实例,并且设置其属性:



sqlcommand cmd = new sqlcommand();
cmd.commandtype = commandtype.text;
cmd.connection = conn;
cmd.commandtext = "select datepart(second, getdate()) " + " as timestamp,* from authors";




  通过调用sqlcommand对象的executereader方法来执行sql语句。



sqldatareader rdr = cmd.executereader();




  最后,使用sqlpipe对象,将结果集返回 到客户端。这可以使用send方法实现

sp.send(rdr);



  要注意的是,我们在创建存储过程后,必须对其进行部署。我们先选择builde菜单中的 build sqlproject1,就会编译我们刚才创建的类。当编译完工程后,就可以进行部署了。部署也十分简单,选择build菜单,然后选择deploy sqlproject1,这样就会自动将刚写好的存储过程部署到sql server 2005中去。



  最后,我们还要在sql server management studio中,执行如下语句,以确保在sql server 中可以执行托管代码:



exec sp_configure ’clr enabled’, 1;
reconfigure with override;
go



文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·ASP.NET的安装与运行环境-.NET教程,Asp.Net开发
·运用.NET+SQL Server2005构建多层网站(3)-.NET教程,数据库应用
·JAVA写的四则混合运算-JSP教程,Java技巧及代码
·获取高精度的时间差,可以用来分析页面运行时间的长短-.NET教程,Asp.Net开发
·基于.Net平台应用程序唯一运行实例C#代码实现-.NET教程,C#语言
·运用.NET+SQL Server2005构建多层网站(1)-.NET教程,数据库应用
·Alexa 世界网站排名研究(下)-网站运营,搜索引擎推广
·优化系统让Photoshop运行更流畅-网页设计,Photoshop
·ASP.NET 2.0运行时简要分析-.NET教程,Asp.Net开发
·手工打造运算符重载过程-.NET教程,C#语言

最新文章
·阿里巴巴明日接受认购 招股价上限或上调
·web2.0时代谁做优秀内容的提供商
·Ranking - 影响排名的六大因素
·站点推广到底是个什么东西
·建站新思路:虚拟整人减压未来网络黄金项目
·07胡润IT富豪榜发布:李彦宏成IT首富
·细说 AdSense 政策:什么是鼓励点击
·中搜 “说再见别说永远”
·商业模式越简单越成功吗?
·国外博客靠广告赚钱营利走向职业化


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号