VB.Net根据用户输入文本框从sql数据库中检索数据

时间:2014-02-03 14:18:57

标签: sql database vb.net

我用VB应用程序创建了一个SQL数据库。我有一个允许用户插入新记录的表单。每条新记录都有一个唯一的ID号。我希望用户能够使用ID号搜索记录。

我有一个带有文本框的页面,允许他们插入ID号。然后他们点击提交。所以查询数据库;如果ID号不存在,则会出现一个错误消息框。如果ID号确实存在,则显示新页面并显示记录。

我假设当用户输入他们的ID号时,数据库连接将在第一页开始。 我有两个订单表,所以我需要查询两个表。这是我第一页的代码。

    Try

        Dim dbconnection As SqlConnection = New SqlConnection("Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Cara\Documents\Visual Studio 2012\Projects\Online Portal Solutions\Online Portal Solutions\Online Portal Solutions Database.mdf;Integrated Security=True")
        dbconnection.Open()
        Dim statement As String = "SELECT * FROM [JKPOrders] WHERE OrderNoID='" & txt_jkpfind.Text & "';"
        Dim com As SqlCommand = New SqlCommand(statement, dbconnection)
        Dim read As SqlDataReader = com.ExecuteReader

        Dim dbconnection2 As SqlConnection = New SqlConnection("Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Cara\Documents\Visual Studio 2012\Projects\Online Portal Solutions\Online Portal Solutions\Online Portal Solutions Database.mdf;Integrated Security=True")
        dbconnection2.Open()
        Dim statement2 As String = "SELECT * FROM [ClarkeOrders] WHERE OrderNoID='" & txt_jkpfind.Text & "';"
        Dim com2 As SqlCommand = New SqlCommand(statement2, dbconnection2)
        Dim read2 As SqlDataReader = com2.ExecuteReader

        If read.Read Then
            If txt_jkpfind.Text.ToString <> read("OrderNoID") Then
                jkpfindorderno = Val(txt_jkpfind.Text)
                Me.Hide()
                frm_Ecustjkpbookingsummary.Show()
            End If

        ElseIf read2.Read Then
            If txt_jkpfind.Text.ToString <> read("OrderNoID") Then
                jkpfindorderno = Val(txt_jkpfind.Text)
                Me.Hide()
                frm_Ecustjkpbookingsummary.Show()
            End If

        Else
            MessageBox.Show("no.", "No Entry",
                       MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If

    Catch ex As Exception

    End Try

它识别记录何时不存在并显示消息框但是当输入正确的ID号时它没有做任何事情,我做错了什么?

另外,我在下一页上有一个显示记录的数据适配器,数据绑定器等。这是我显示记录的方式,我该怎么做?

2 个答案:

答案 0 :(得分:1)

不需要两个连接。您正在使用mdf数据库文件。哪个是访问数据库文件。我非常肯定Access一次只允许一个连接。所以你是第一个查询可能会阻止第二个查询。通过创建一个连接来查看它是否有效。

此外,所有数据库连接都是此函数的本地连接,与数据绑定无关。您必须向我们展示有关如何设置绑定的详细信息,以指出它可能出现的问题。

此外,您应该使用参数化查询来防止sql注入和其他事情。要参数化第一个查询,请执行此操作。

Dim statement As String = "SELECT * FROM [JKPOrders] WHERE OrderNoID=@OrderId;"
Dim com As SqlCommand = New SqlCommand(statement, dbconnection)
com.Parameters.Add(new SqlParameter("@OrderId", txt_jkpfind.Text))

答案 1 :(得分:0)

试试这个

 If read.Read Then
            If txt_jkpfind.Text.ToString <> read("OrderNoID").ToString() Then
                jkpfindorderno = Val(txt_jkpfind.Text)
                Me.Hide()
                frm_Ecustjkpbookingsummary.Show()
            End If

        ElseIf read2.Read Then
            If txt_jkpfind.Text.ToString <> read("OrderNoID").ToString() Then
                jkpfindorderno = Val(txt_jkpfind.Text)
                Me.Hide()
                frm_Ecustjkpbookingsummary.Show()
            End If

        Else
            MessageBox.Show("no.", "No Entry",
                       MessageBoxButtons.OK, MessageBoxIcon.Error)
 End If