Проблема с устройством чтения данных в Visual Basic и SQL - PullRequest
0 голосов
/ 22 июня 2010

Я работаю над функцией поиска для программы, над которой я работаю, и нашел в Интернете учебник, который дает некоторую информацию, но реальный код, после изменения в соответствии с моим приложением, не работает.на данный момент я получаю две разные ошибки, одна из которых говорит мне, что «значение типа« System.data.sqlclient.sqldatareader »не может быть преобразовано в« одномерный массив system.data.sqlclient.sqldatareader », а другая -говорит "аргумент не указан для параметра" массив "из" Public shared function ... в любом случае, я немного новичок в этом, и вот что я имею до сих пор. любой совет?

Private Sub SearchOKButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SearchOKButton.Click

Dim TrNum
    Dim dr As SqlDataReader()

    TrNum = Me.SearchText.Text()

   Using connection As New SqlClient.SqlConnection("Data Source=XXXXX;Initial Catalog=YYYYY;Integrated Security=True;Pooling=False;Encrypt=False"), _
    cmd As New SqlClient.SqlCommand("SELECT [YYYYY] FROM (TrackingNumber) WHERE TrackingNumber = 'TrNum'", connection)

        connection.Open()
        dr = cmd.ExecuteReader()
        While dr.AsReadOnly()
            MsgBox("TrackingNumber" + "Date")
        End While
        connection.Close()

    End Using

End Sub

Ответы [ 3 ]

1 голос
/ 22 июня 2010

Здесь есть несколько проблем ...

Отредактировано:

Я предполагаю, что TrackingNumber - это запрашиваемая вами таблица, и эта таблица содержит столбцы TrackingNumber и Date.

Dim TrNum as String = Me.SearchText.Text ' <== Text is a property, not a function

Dim connectionString as string = "Data Source=XXXXX;Initial Catalog=YYYYY;Integrated Security=True;Pooling=False;Encrypt=False"

Dim cmdText as string = "SELECT TrackingNumber, [date] " & _
                        "FROM TrackingNumber " & _
                        "WHERE TrackingNumber = @trackingNumber"

Using connection As New SqlClient.SqlConnection(connectionString)

    Dim cmd As New SqlClient.SqlCommand(cmdText, connection)

    ' assign TrNum to @trackingNumber
    cmd.Parameters.AddWithValue("@trackingNumber", TrNum)    
    connection.Open()
    dim dr as SqlDataReader = cmd.ExecuteReader()

    While dr.Read()       ' <== this is probably what you want
        MsgBox(string.Format("{0} {1}", dr("TrackingNumber"), dr("Date"))
    End While

End Using

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

Вероятно, вам следует сохранить соединениестрока в web.config.

0 голосов
/ 22 июня 2010

Ваше первое сообщение об ошибке говорит вам, что вам нужно знать: что вы пытаетесь создать массив DataReaders, когда вам не следует:

Dim dr As SqlDataReader()

Измените это на:

Dim dr As SqlDataReader
0 голосов
/ 22 июня 2010

Я не эксперт по VB, но у меня много таких подключений внутри SCOM. Мой цикл WHILE выглядит так:

while dr.eof <> true and dr.bof <> true
    MsgBox(dr("TrackingNumber") + dr("Date"))
    dr.movenext
wend
connection.close

Сколько строк возвращает ваш оператор SQL?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...