我的问题是,当我使用常见的ID进行查询时,比如number with no segments = 1234567890,它工作得很好。
但我需要通过某种分段值或ID来查询,例如= 123-4567-890,当我尝试通过123-4567-890这个id时,它不会在mysql中查询任何东西,尽管在数据库中存在这个123-4567-890 ID。
那么在VB.NET中的mysql中按分段值进行搜索的可能解决方案是什么呢?
下面是我用vb编写的试用代码。
公开子学生()
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发布于 2012-02-06 06:20:16
当你遇到问题时,解决它们的最简单的方法就是把事情分解成最简单的场景。因此,与其用表适配器和数据表使事情复杂化,不如看看当您只是向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发布于 2012-02-06 06:26:05
如果列实际上是一种学生ID列(而不是我期望的社会保障列),并且表中没有特殊字符,我将预先从字符串中去掉额外的格式(连字符),并将清理后的值作为参数传递给查询以获得结果。
此外,通过显式地添加查询字符串和文本框值,您将为sql注入留下很大的空间。查看参数化查询(我猜测它可能是一个类似于MySqlDataParameter数据类型的对象)。
https://stackoverflow.com/questions/9152766
复制相似问题