首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何按照vb.net中mysql中的123-456-789这样的分段值进行查询?

问如何按照vb.net中mysql中的123-456-789这样的分段值进行查询?
EN

Stack Overflow用户
提问于 2012-02-06 04:34:09
回答 2查看 145关注 0票数 0

我的问题是,当我使用常见的ID进行查询时,比如number with no segments = 1234567890,它工作得很好。

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

那么在VB.NET中的mysql中按分段值进行搜索的可能解决方案是什么呢?

下面是我用vb编写的试用代码。

公开子学生()

代码语言:javascript
复制
    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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-06 06:20:16

当你遇到问题时,解决它们的最简单的方法就是把事情分解成最简单的场景。因此,与其用表适配器和数据表使事情复杂化,不如看看当您只是向MySQL发送您“认为”正确工作的查询时会发生什么。

因此,首先看看你是否能让它工作,然后从那里开始:

代码语言:javascript
复制
    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
票数 0
EN

Stack Overflow用户

发布于 2012-02-06 06:26:05

如果列实际上是一种学生ID列(而不是我期望的社会保障列),并且表中没有特殊字符,我将预先从字符串中去掉额外的格式(连字符),并将清理后的值作为参数传递给查询以获得结果。

此外,通过显式地添加查询字符串和文本框值,您将为sql注入留下很大的空间。查看参数化查询(我猜测它可能是一个类似于MySqlDataParameter数据类型的对象)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9152766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档