根据另一列检索数据库数据

时间:2016-02-21 12:55:49

标签: mysql vb.net

enter image description here

我的数据库中有NumberCollege列。我要做的是根据我的Number列获取College列。例如,我有我的组合框,如果我选择" SCITECH"然后它将获得所有Number的" SCITECH"人

我尝试使用此代码但我无法检索数字。

 If Form1.TextBox1UN.Text = "admin" Then
                 Query = "Select * from database.students"

            Else
                Query = "Select * from database.students where College ='" & Form1.ComboBox1.SelectedItem & "'"
                COMMAND = New MySqlCommand(Query, mydbcon)

                reader = COMMAND.ExecuteReader
                While reader.Read

                    ComboBox3.Items.Add("Number")

2 个答案:

答案 0 :(得分:0)

以下是如何获取Number的值,X是select语句中的序号位置。您不应该使用SELECT *而是使用SELECT Number

<!doctype html>

答案 1 :(得分:0)

您的代码中应该做一些事情,以使其更加强大和可靠。这可能看起来很麻烦,但值得做。

首先,您应该通过检查SelectedIndex来检查是否存在SelectedValue。

然后,您应该使用参数化查询,这意味着您将占位符放在查询文本中,并稍后将值作为参数添加。原因是您不必担心转义撇号等问题,并使其更安全地抵御SQL注入攻击。

您应该注意公开该方法的.Dispose()个对象,以便框架可以为您清理事物。否则,您可能会出现内存泄漏,文件被错误打开或数据库连接耗尽,如某些示例所示。 Using构造将为您执行此操作,您也可以使用Finally构造的Try...Catch子句。

我没有MySql进行测试,但以下内容应该是您需要的一个很好的近似值:

Option Strict On
Option Infer On
' ....'
Sub x()
    If Form1.ComboBox1.SelectedIndex = -1 Then
        ' nothing is selected.
        ' Take the appropriate action
    End If

    Dim collegeName = ComboBox1.SelectedItem.ToString()
    Dim query = "Select `Number` from database.students where College = @CollegeName"
    Using cmd As New MySqlCommand(query, dbconn)
        cmd.Parameters.Add(New MySqlParameter With {.ParameterName = "@CollegeName", .DbType = MySqlDbType.VarChar, .Value = collegeName})

        Try
            dbconn.Open()
            Dim numbers As New List(Of Object)
            Dim reader = cmd.ExecuteReader()

            While reader.Read()
                numbers.Add(reader.GetInt32(0).ToObject())
            End While

            ComboBox3.Items.AddRange(numbers.ToArray())

        Catch ex As Exception
            MessageBox.Show("Error retrieving from database:" & ex.Message)
        Finally
            If dbconn IsNot Nothing Then
                dbconn.Close()
                dbconn.Dispose()
            End If
        End Try

    End Using

End Sub

您需要添加代码以允许“admin”案例。