ASP.NET2.0+SQL Server2005构建多层应用(2)
2006-01-10 16:38:49 来源:CSDN 作者: 点击:
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