文本框无法正确显示

时间:2011-05-04 02:15:54

标签: sql vb.net visual-studio-2010

基于这个VB代码,我得到了在我的SQL数据库中正确创建的所有东西,但不是在txtfoodid中显示的Food_ID,它会弹出一个消息框(我认为这是因为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 个答案:

答案 0 :(得分:1)

您正在引用列txtfoodid.Text = dr(“Food_ID”)。ToString但您的Select语句仅返回@@ Identity。

该读卡器没有返回Food_ID列。使用自己的阅读器创建新的Select查询或修改第二个语句以返回Food_ID列。

此外,您的代码非常容易受到SQL注入类型的攻击,并建议阅读Stop Sql Injection Attacks Before They Stop You

答案 1 :(得分:0)

Pepto大多是对的。唯一的是,您拥有所需的信息。基本上,只需改变这一行

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

txtfoodid.Text = Food_ID

你会很高兴。您正在尝试从DataReader中读取Food_ID,并将其分配给变量Food_ID。