Member 12919944 Ответов: 2

Массив Vb предотвращает многократное чтение


у меня есть база данных с мобильными номерами, теперь я хочу поместить их в список массивов и показать один за другим.

Я хочу, чтобы мой вывод был: 639057318820 639355514108 639056784959

но мой код вывода: 639057318820 639057318820 639355514108
639057318820 639355514108
639056784959

Что я уже пробовал:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

Dim arrName As New ArrayList()
        Dim con As New SqlConnection
        Dim cmd As New SqlCommand
        Dim rdr As SqlDataReader
        con.ConnectionString = "Data Source=.\sqlexpress;Initial Catalog=GradingSystemSample;Integrated Security=True;Pooling=False"
        cmd.Connection = con
        con.Open()

        cmd.CommandText = "select numb FROM Table2  "
        rdr = cmd.ExecuteReader
        If rdr.HasRows Then
            While rdr.Read

                arrName.Add(rdr("numb"))
                For Each pno As String In arrName
                    MsgBox(pno)
                Next

            End While

        End If
End sub

2 Ответов

Рейтинг:
0

Peter Leow

Во-первых, нет никакой необходимости

rdr.HasRows

как
rdr.Read

вернет false, когда строки нет.
Расположение каждого из них вызывает сомнения. Зачем помещать его в то время, когда и это является виновником того, что вызывает "многочитание". Он должен быть помещен после окончания времени.


Рейтинг:
0

Maciej Los

Я бы предложил исправить это таким образом:

rdr = cmd.ExecuteReader
'If rdr.HasRows Then
    While rdr.Read

        arrName.Add(rdr("numb"))
        'For Each pno As String In arrName
            MsgBox(rdr("numb"))
        'Next

    End While


Почему? Пожалуйста, прочтите это: Класс sqldatareader.Метод Чтения (System. Data.SqlClient)[^]