虚拟主机行业最新资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:站长资讯>-> 网站运营-> 网站运营
运用.NET+SQL Server2005构建多层网站(2)-.NET教程,数据库应用
作者:网友供稿 点击:88
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,空间150元起,免费试用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] 
相关主题
  • 运用.NET+SQL Server2005构建多层网站(3)-.NET教程,数据库应用
  • 运用.NET+SQL Server2005构建多层网站(1)-.NET教程,数据库应用
  • Google

    热门文章
    ·ASP.NET的安装与运行环境-.NET教程,Asp.Net开发
    ·运用.NET+SQL Server2005构建多层网站(3)-.NET教程,数据库应用
    ·JAVA写的四则混合运算-JSP教程,Java技巧及代码
    ·获取高精度的时间差,可以用来分析页面运行时间的长短-.NET教程,Asp.Net开发
    ·基于.Net平台应用程序唯一运行实例C#代码实现-.NET教程,C#语言
    ·Alexa 世界网站排名研究(下)-网站运营,搜索引擎推广
    ·运用.NET+SQL Server2005构建多层网站(1)-.NET教程,数据库应用
    ·优化系统让Photoshop运行更流畅-网页设计,Photoshop
    ·ASP.NET 2.0运行时简要分析-.NET教程,Asp.Net开发
    ·手工打造运算符重载过程-.NET教程,C#语言

    最新文章
    ·MySQL服务器内部安全数据目录访问
    ·MySQL和SQL Server,到底选择谁?
    ·五种推广模式的优劣的比较
    ·基于.Net平台应用程序唯一运行实例C#代码实现-.NET教程,C#语言
    ·运用反射给实体赋值-.NET教程,Asp.Net开发
    ·大数运算(一)-.NET教程,评论及其它
    ·虚拟主机上asp.net运行权限不足问题及解决-.NET教程,Asp.Net开发
    ·ASP.NET底层架构探索之进入.NET运行时-.NET教程,Asp.Net开发
    ·基于.Net平台应用程序唯一运行实例实现-.NET教程,.NET Framework
    ·ASP.NET 2.0运行时简要分析-.NET教程,Asp.Net开发

    相关主题
  • 运用.NET+SQL Server2005构建多层网站(3)-.NET教程,数据库应用
  • 运用.NET+SQL Server2005构建多层网站(1)-.NET教程,数据库应用



  • 友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 一班在线
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机


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

    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
      打印  刷新  关闭


    联系我们  |  广告服务  |  免责声明  |  友情连接
    Copyright ?2005 - 2006 All Rights Reserved
    蜀ICP备05000045号