Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不返回任何记录的简单VB.net SQL数据查询_Vb.net_Sql Server 2005_.net 2.0 - Fatal编程技术网

不返回任何记录的简单VB.net SQL数据查询

不返回任何记录的简单VB.net SQL数据查询,vb.net,sql-server-2005,.net-2.0,Vb.net,Sql Server 2005,.net 2.0,我正在尝试调试我的代码,这涉及一个简单的Web服务,它将参数传递给一个数据类,该数据类调用一个存储的进程,并返回一行记录。我没有收到任何错误消息,但我也没有收到任何记录 我的Web服务代码是: <WebMethod()> _ Public Function GetDataValues(ByVal AutoVIN As String, ByVal OrderID As String, ByVal StatusCode As String, ByVal DivisionID As Str

我正在尝试调试我的代码,这涉及一个简单的Web服务,它将参数传递给一个数据类,该数据类调用一个存储的进程,并返回一行记录。我没有收到任何错误消息,但我也没有收到任何记录

我的Web服务代码是:

<WebMethod()> _
Public Function GetDataValues(ByVal AutoVIN As String, ByVal OrderID As String, ByVal StatusCode As String, ByVal DivisionID As String) As String
    Dim oGetHeaderValue As New clsGetHeaderValue

    Dim GetHeaderValues As String = ""

    Dim strAutoVIN = Trim(AutoVIN)
    Dim strOrderID = Trim(OrderID)
    Dim strStatusCode = Trim(StatusCode)
    Dim strDivisionID = Trim(DivisionID)

    Try
        'Validate user entries if they are the correct length;
        If Not IsNumeric(strAutoVIN) Or Len(Trim(strAutoVIN)) <> 3 Then
            Throw New SoapException("Invalid Auto VI Number", SoapException.ClientFaultCode)
        End If

        'OrderID could be 12 digits in length
        If Not IsNumeric(strOrderID) Then
            Throw New SoapException("Invalid Order ID", SoapException.ClientFaultCode)
        End If

        '************************Verify if the order exists "Order Number not in requested status" in table Auto.orderHeader
        '************************Validate entries against db table;

        'Call Stored Proc and pass parameters;
        Dim retDataSet As Data.DataSet
        retDataSet = oGetHeaderValue.GetHeaderValue(strAutoVIN, strOrderID, strStatusCode, strDivisionID)

        GetHeaderValues = retDataSet.ToString()
        Return GetHeaderValues

    Catch ex As Exception
        Return "<ERR>" & ex.Message.ToString & "</ERR>"
    End Try
End Function
Public Function GetGetHeaderValue(ByVal sAutoVIN As String, ByVal sOrderID As String, ByVal sStatusCode As String, ByVal sDivisionID As String) As DataSet
Dim sqlDA As New SqlDataAdapter
Dim ds As New DataSet
Dim sqlcmd As New SqlCommand

Dim conn As New SqlConnection(strCN_Auto)

sqlDA = New SqlDataAdapter("uspExportOrders", conn)
sqlDA.SelectCommand.CommandType = CommandType.StoredProcedure

sqlDA.SelectCommand.Parameters.Add(New SqlParameter("@AutoVIN", SqlDbType.VarChar, 3))
sqlDA.SelectCommand.Parameters("@AutoVIN").Value = sAutoVIN

sqlDA.SelectCommand.Parameters.Add(New SqlParameter("@OrderID", SqlDbType.VarChar, 12))
sqlDA.SelectCommand.Parameters("@OrderID").Value = sOrderID

sqlDA.SelectCommand.Parameters.Add(New SqlParameter("@StatusCode", SqlDbType.VarChar, 10))
sqlDA.SelectCommand.Parameters("@StatusCode").Value = sStatusCode

sqlDA.SelectCommand.Parameters.Add(New SqlParameter("@DivisionID", SqlDbType.VarChar, 3))
sqlDA.SelectCommand.Parameters("@DivisionID").Value = sDivisionID

sqlDA.Fill(ds) 'Fill the DataSet with the rows returned.

Return ds

sqlDA.Dispose()
    conn.Close()
End Function  

我的假设是,存储过程只返回一个字符串值。我不认为你的问题在于你的程序不返回任何数据

更改以下内容:

GetHeaderValues = retDataSet.ToString()


原因如下。如果数据库中的这个过程只需要一个字符串,则不必返回整个数据集,但这没关系。数据集比仅仅从中获取字符串值要复杂一些。它可以包含许多表(这就是它通常被使用的原因),并允许您更改数据(您没有这样做)。您可能需要使用命令的.ExecuteScalar进行研究。我假设您的表只有一个,所以您可以将其称为.Table(0),或者您可以将零替换为表名(您没有)。在每个表中,都有行和列。同样,只有一行和一列,因此我们可以将它们引用为行(0)和列(0)。

不是答案,但您没有提到您返回了一些内容,然后您想处理并关闭其他内容吗?!请看一下如何使用关键字并尝试/catch/finally。如果您在SSMS中使用相同的输入执行存储过程,是否会恢复记录?(又名,您确定错误在您的代码中而不是存储过程中吗?)是的,记录在SSMS中返回
Dim dr As DataRow
dr = retDataSet.Tables(0).Rows(0)
GetHeaderValues = dr(0).ToString()