文章作者 100test 发表时间 2007:03:13 21:47:02
来源 100Test.Com百考试题网
首先查看一下 ADO.NET 2.0 提供用来创建 SQL Server 服务器端对象的相关类。
当用 .NET 开发 SQL Server 的内部对象时,最常使用的命名空间将会是存在 Sqlaccess.dll 程序文件内的 System.Data.SqlServer。若你曾经用 ADO.NET 开发数据库的应用程序,则部分对象是相通的。例如 SqlConnection、SqlCommand 等,微软的开发小组尽量让程序设计师在 SQL Server 内访问数据与在外部访问数据的程序编写方式相似,而不需要熟悉两套开发模式。以下稍微解释这些对象:
SqlContext:SqlContext 类让你可以取得 SQL Server 内部调用者的执行环境(Context),主要是取得 SqlPipe 类实例,用此返回结果给前端调用该数据库对象的应用程序,或是 SqlTriggerContext 以提供编写触发器(Trigger)的相关数据。SqlContext 类在让我们所编写的程序集与 SQL Server 进行沟通时显得非常重要。使用该类的程序范例如程序代码列表11-1所示:
程序代码列表11-1 通过 SqlContext 取得用户当前的执行环境
Using cnn As New SqlConnection("Context Connection=true")
Using sqlCmd As New SqlCommand
因为 Product 数据表属于不同的 Schema,所以需要加上 Schema 名称
cnn.Open()
sqlCmd.Connection = cnn
sqlCmd.CommandText = "SELECT ProductNumber FROM Production.Product"
Dim sqlRead As SqlDataReader = sqlCmd.ExecuteReader()
因为是存储过程,要通过 SqlPipe 将运行结果接回原来 SQL Server 的输出
Dim sqlP As SqlPipe = SqlContext.Pipe
sqlP.Send(sqlRead)
End Using
End Using
程序代码列表11-1 仅是简单地取得 Production.Product 数据表内的 ProductNumber 字段,然后直接返回给前端。由于被调用的对象是在用户已经取得的连接环境内执行,若要传递数据给用户,就需要通过程序代码列表 11-1 的方式引用 SqlContext 类的 Pipe 属性,取得 SqlPipe 对象实例后,再通过 Send 方法将结果返回。
SqlConnection:让我们所编写的程序取得对程序集实例被 SQL Server 外部的前端应用程序调用时,该应用程序所在的数据库连接相关设置。这些连接设置并不是由我们用 .NET 所编写的存储过程或用户自定义函数的对象决定的,被调用的数据库内部对象需要与外部应用程序使用相同的连接环境。可以用以下的程序通过连接字符串设置如下,而通过这条连接再执行其他的 SQL 语法:
Using cnn As New SqlConnection("Context Connection=true")
SqlCommand:让你传送 T-SQL 命令到数据库服务器,参照前述程序代码列表 11-1 的范例,可以依照一般方式创建 SqlCommand 对象实例,并通过 SqlConnection 实例来执行取得产品编号的 T-SQL 语法。
SqlParameter:用以设置与访问 SqlCommand 对象内传递的参数。范例程序如程序代码列表11-2所示:
程序代码列表 11-2 通过 SqlCommand 和 SqlParameter 对象搭配SHA1 哈希算法为密码编码
Public Shared Sub WriteHashedPassword(ByVal UserName As String, ByVal Password As String)