当我在第一个文本框中写下单词(大小)时
我的字典从访问数据库应用此行:
并在第二个文本框中写下(large-big-huge)
但是我试图反过来搜索(大)例如
并且程序在第二个文本框中给出(大小)
但我必须写(大 - 大)以应用前一行
我如何使用与( - )?
标记的数据库的部分匹配功能代码:
Function argetword(ByVal content As String) As String
Try
Using adp As New OleDb.OleDbDataAdapter("SELECT * FROM [Words]", connectionString)
Using tbl As New DataTable
If adp.Fill(tbl) > 0 Then
For Each row As DataRow In tbl.Rows
content = System.Text.RegularExpressions.Regex.Replace(content, row.Item("values"), row.Item("idom"), System.Text.RegularExpressions.RegexOptions.IgnoreCase)
Next
End If
End Using
End Using
Return content
Catch ex As Exception
MsgBox(ex.Message)
Return String.Empty
End Try
End Function
翻译代码按钮:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox2.Text = argetword(TextBox1.Text)
其他信息:
编辑代码:
Function argetword(ByVal content As String) As String
Try
Using adp As New OleDb.OleDbDataAdapter("SELECT English FROM [Words] WHERE Arabic LIKE '%" & content & "%'", connectionString)
Using tbl As New DataTable
If adp.Fill(tbl) > 0 Then
For Each row As DataRow In tbl.Rows
content = System.Text.RegularExpressions.Regex.Replace(content, row.Item("Arabic"), row.Item("English"), System.Text.RegularExpressions.RegexOptions.IgnoreCase)
Next
End If
End Using
End Using
Return content
Catch ex As Exception
MsgBox(ex.Message)
Return String.Empty
End Try
End Function
数据库图片:
错误消息的快照:
答案 0 :(得分:0)
似乎你得到了所有的值,然后通过每个值来检查一列是否与输入相匹配 - 这似乎是不必要的复杂(我认为无论如何)你想要做的。
为什么不改变select语句 -
"SELECT values FROM Words WHERE idom = '" & content & "'"
然后另一种方式 -
"SELECT idom FROM Words WHERE values LIKE '*" & content & "*'"
“Like”关键字返回包含内容的任何值,百分比符号表示该单词之前或之后可以有任何内容,但仍然匹配
如果您按照现在的方式设置它,可以使用string.Contains函数查看是否在任一列中找到了内容。
If row.item("values").contains(content) orelse row.item("idom").contains(content)
等