[英]Getting DATA from SQL Server by WCF Services using ADO.NET VB.NET
我已将WCF服务附加到示例网站。
除了使用SQL查询从SQL Server获取数据的函数以外,WCF函数都可以正常工作。
我对VB.NET不太熟悉,我的经验来自VBA,这很相似,但是设置查询却大不相同。
最初,我尝试使用SqlDataReader
然后使用SqlDataAdapter
相同的结果。 我的服务卡住了。
Visual Studio显示由于内部错误,导致SQL Server无法传递数据的错误。
这很奇怪,因为当我在Visual Studio中使用“ WCF测试客户端”时,两个功能都可以正常工作并接收正确的数据。 另外,当我直接将此功能附加到我的网站时,效果也很好。 问题是WCF使用它们。
下面是我的SQLDataAdapter函数
Public Function GetCookiesPriceDS(ByVal nameOfCookie As String) _
As DataSet Implements IService1.GetCookiesPriceDS
Dim queryString As String
Dim dataSet As DataSet = New DataSet("temporary")
queryString = "select CookiesPrice from " &
"tblCookies where CookiesName='" & nameOfCookie & "'"
Using connection As New SqlConnection _
("Server= xyz\SQLEXPRESS; Database = Cookies2; " &
"Integrated Security = true;User Id = xyz;Password = xyz")
Dim adapter As New SqlDataAdapter()
adapter.SelectCommand = New SqlCommand(queryString, connection)
adapter.Fill(dataSet)
Return dataSet
End Using
End Function
好的,我在vb.net中找到了一些示例代码,并做了一些小的更改。 它不起作用,因为在“ WCF Test Client”中,函数旁边显示了红色符号,并带有注释-“在WCF Test Client中不支持此操作,因为它使用WcfService.CookiesData类型。”但是尽管如此,我认为这段代码要好得多比我以前的版本更好,并且在和中具有更好的定义。 但是仍然存在一些问题,我无法弄清楚什么是错的
Imports System.Data.SqlClient
Imports System.Data
Imports System.Configuration
Imports System.ServiceModel
Imports System.Runtime.Serialization
Public Class Service1
Implements IService1
Public Function GetCookiesPriceDS(ByVal nameOfCookie As String) _
As CookiesData Implements IService1.GetCookiesPriceDS
Using con As New SqlConnection("Server= xyz\SQLEXPRESS; Database = Cookies2; " &
"Integrated Security = true;")
Using cmd As New SqlCommand("select CookiesPrice from tblCookies where CookiesName='" & nameOfCookie & "'")
Using sda As New SqlDataAdapter()
cmd.Connection = con
sda.SelectCommand = cmd
Using dt As New DataTable()
Dim ck As New CookiesData()
sda.Fill(ck.CustomersTable)
Return ck
End Using
End Using
End Using
End Using
End Function
End Class
<ServiceContract()>
Public Interface IService1
<OperationContract()>
Function GetCookiesPriceDS(ByVal nameOfCookie As String) As CookiesData
End Interface
<DataContract()>
Public Class CookiesData
Public Sub New()
CustomersTable = New DataTable("TblCookies")
End Sub
<DataMember()>
Public Property CustomersTable() As DataTable
End Class
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.