Текстовое поле не отображается правильно - PullRequest
0 голосов
/ 04 мая 2011

Основываясь на этом VB-коде, я получаю все для правильного создания в моей базе данных SQL, но вместо отображения Food_ID в txtfoodid он появляется в окне сообщения (я думаю, что это из-за Try / Catch).

 Dim con As New OleDbConnection(DBcon)
    Try
        Dim dr As OleDbDataReader
        Dim command As New OleDbCommand("Insert into Donation (Donor_ID) VALUES ( " & txtDonNum.Text & "); Select @@Identity;")

        con.Open()
        command.Connection = con
        dr = command.ExecuteReader
        Dim Donation_ID As String = ""
        If dr.Read() Then
            Donation_ID = dr(0).ToString
            Dim food As New OleDbCommand("Insert into Food_Donation (Date_Received, Donation_ID) Values ( '" & maskedreceived.Text & "', " & Donation_ID & "); Select @@Identity")
            food.Connection = con
            dr = food.ExecuteReader()
            'food.ExecuteNonQuery()
        End If
        Dim Food_ID As String
        If dr.Read() Then
            Food_ID = dr(0).ToString
            txtfoodid.Text = dr("Food_ID").ToString
        End If

    Catch ex As Exception

        MessageBox.Show(ex.Message)
    Finally
        con.Close()
    End Try

    MessageBox.Show("Food_ID has been made.")

End Sub

Я пробовал несколько способов его отображения, но пока ничего не получалось.

Ответы [ 2 ]

1 голос
/ 04 мая 2011

Вы ссылаетесь на столбец txtfoodid.Text = dr ("Food_ID"). ToString, но ваш оператор Select возвращает только @@ Identity.

Нет столбца Food_ID, возвращенного этим читателем. Либо создайте новый запрос Select с собственным читателем, либо измените второй оператор, чтобы он возвращал столбец Food_ID.

Кроме того, ваш код невероятно восприимчив к атакам типа SQL-инъекций и рекомендует читать Stop Sql Injection Attack до того, как они остановят вас

0 голосов
/ 04 мая 2011

Пепто в основном прав.Единственное, у вас есть информация, которая вам нужна.В основном, просто измените эту строку

txtfoodid.Text = dr("Food_ID").ToString

на

txtfoodid.Text = Food_ID

, и вам будет хорошо идти.Вы пытаетесь прочитать Food_ID из DataReader, когда вы его уже получили и присвоили переменной Food_ID.

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