簡體   English   中英

遍歷SQLdatareader並比較行值

[英]Looping through SQLdatareader and comparing row values

我有一個調用存儲過程的函數。 我需要將結果與輸入參數進行比較。 我不斷收到警告,該函數不會在所有代碼路徑上返回,但是我不知道該在哪里。

因此,有兩個問題:1.我是否正確地遍歷SqlDataReader ,還是應該用閱讀器結果填充數據表? 2.我在哪里缺少返回值?

功能碼:

Function FZCheck(FZ As String) As Boolean

    Dim constr As String = My.Settings.devTOD.ToString
    Dim con As New SqlConnection(constr)

    Dim cmd As New SqlCommand("spSelectFloodZones", con)
    cmd.CommandType = CommandType.StoredProcedure

    If con.State = ConnectionState.Closed Then
        con.Open()
    End If

    Dim rdr As SqlDataReader
    rdr = cmd.ExecuteReader

    If rdr.HasRows Then
        Do While rdr.Read
            If String.Equals(rdr(0).ToString, FZ) = True Then
                Return True
            Else
                Return False
            End If
        Loop
    Else
        Return False
    End If

    If con.State = ConnectionState.Open Then
        con.Close()
    End If

    rdr.Close()

End Function

存儲的過程代碼:(非常簡單)

ALTER PROCEDURE [dbo].[spSelectFloodZones]
AS
    SET NOCOUNT ON
    SET ROWCOUNT 0

-- ====================
-- Select flood zones
-- ====================

SELECT DISTINCT FloodZone
FROM TOD.dbo.FloodZones

語言是VB.NET,使用SQL Server 2012。

在這里,您需要進行一些小的重構。

Function FZCheck(FZ As String) As Boolean
        Dim constr As String = My.Settings.devTOD.ToString
        Dim con As New SqlConnection(constr)
        Dim result As Boolean = False

        Dim cmd As New SqlCommand("spSelectFloodZones", con)
        cmd.CommandType = CommandType.StoredProcedure

        If con.State = ConnectionState.Closed Then
            con.Open()
        End If

        Dim rdr As SqlDataReader
        rdr = cmd.ExecuteReader

        If rdr.HasRows Then
            Do While rdr.Read
                If String.Equals(rdr(0).ToString, FZ) = True Then
                    result = True
                End If
            Loop
        End If

        If con.State = ConnectionState.Open Then
            con.Close()
        End If
        rdr.Close()
        Return result
    End Function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM