如何突破While SqlDataReader.Read循环返回值然后返回循环中的当前位置

时间:2014-08-20 15:08:32

标签: vb.net while-loop return sqldatareader

我正在使用sqldatareader从查询中读取值。我在while循环中有一个条件语句,它改变了一个由listview中的超链接文本数据绑定调用的字符串变量。我的麻烦在于,对于sqldatareader.read读入的每一行,我需要将我的变量“name”的值绑定到超链接。但是,每次我退出while循环时,读者都会从第一行开始。我需要能够返回while循环以传递变量的值,然后继续返回下一行的循环。总而言之,datareader将读取8行,现​​在它只读取第一行值8次。如果这是不可能的,你能为我提供一些解决这个问题的方法吗?这是我的代码

 Conn.Open()
        sql4.Parameters.AddWithValue("@Search", Search)
        sql4.CommandText = "SELECT Distinct Category, Type FROM SubCategory  WHERE (Subcategory.Category LIKE '%' + @Search + '%')"
        Dim reader As SqlDataReader = sql4.ExecuteReader()

        While reader.Read()

            Dim tst As String = reader("Category")

            If reader.IsDBNull(1) Then

                name = "Category"
                Return name

            ElseIf Not reader.IsDBNull(1) Then

                name = "Type"
                Return name

            End If
        End While

1 个答案:

答案 0 :(得分:0)

我认为我应该能够在ListView调用的查询中做到这一点。我刚刚在使用条件语句运行select查询时创建了一个新列,该条件语句评估" Type" column是否为null,然后我将数据绑定到我的新列中以获取超链接文本。这是一段代码。

 SELECT DISTINCT Photos.Picture, SubCategory.Category, SubCategory.Type, CASE WHEN SubCategory.Type IS NULL THEN SubCategory.Category ELSE SubCategory.Type END AS linkText FROM SubCategory LEFT OUTER JOIN Photos ON SubCategory.Type = Photos.Type WHERE (SubCategory.Type LIKE '%' + @Search + '%')

再次感谢你们。