如何通过分段的值查询,如vb.net中的mysql中的123-456-789?

时间:2012-02-05 20:34:09

标签: mysql sql vb.net

我的问题是,当我按通常的ID查询时,如没有段的数字= 1234567890,它可以很好地工作。

但是我需要通过某种分段值或ID来查询= 123-4567-890,当我尝试123-4567-890时这个id它不会在mysql中查询任何东西虽然在数据库中这个123-4567 -890 ID存在。

那么在VB.NET中用mysql中的分段值搜索的可能解决方案是什么

以下是我在vb中尝试的代码

Public Sub student()

    textbox1.text= "123-4567-890"
    Try
        dbConn()
        Dim myAdapter As New MySqlDataAdapter("Select studentID, batchID, studentStatus from student where studentID= " & textbox1.text, ServerString)
        Dim myDataTable As New DataTable
        myAdapter.Fill(myDataTable)

        If myDataTable.Rows.Count > 0 Then
            vrSID = myDataTable.Rows(0).Item("studentID")
            vrRecBatchID = myDataTable.Rows(0).Item("batchID")
            vrAttendanceStatus = myDataTable.Rows(0).Item("studentStatus")

            If vrSID = vrIDD Then                    
                If vrAttendanceStatus = "Active" Then
                    Console.Beep()
                    batchRoutine()                        
                Else
                    led3()
                    Console.Beep()
                End If
            End If
        Else
            Console.Beep()
            teacher()
        End If
    Catch ex As Exception
        Console.Beep()
        MsgBox ("Error")
    End Try
End Sub

2 个答案:

答案 0 :(得分:0)

当您遇到问题时,解决问题的最简单方法是将事情分解为最简单的方案。因此,不要使用表适配器和数据表使事情复杂化,看看当你发送MySQL时你认为'正常工作的查询会发生什么。

首先看看你是否可以让它发挥作用,然后从那里开始:

    Dim sql As String = "select id from mytable where id = '123-4567-890'"
    Using cnx As New MySqlConnection("connection_string")
        Using cmd As New MySqlCommand(sql, cnx)
            cnx.Open()

            Using reader As MySqlDataReader = cmd.ExecuteReader()

                Debug.Assert(reader.Read(), "No results")
                Trace.WriteLine(reader.GetValue(reader.Item(0)))
            End Using
        End Using
    End Using

答案 1 :(得分:0)

如果该列实际上是一种学生ID列(不是我期望的社交安全性),并且该表没有特殊字符,我会从字符串中删除额外的格式(连字符)并传递查询的CLEANED值作为获取结果的参数。

此外,通过显式添加查询字符串Plus文本框值,您将自己开放给sql注入。查看参数化查询(我的猜测是它将是一个像MySqlDataParameter数据类型的对象。)