在VB.NET中使用函数运行SQL查询
我正在使用vb.net创建一个网站,并尝试用电影标题填充一个复选框列表。用户将输入一个电影标题,我将使用一个函数查找最接近的10个电影标题。该函数使用Lenenshtein距离算法,该算法比较两个字符串,并返回需要交换多少不同字符才能使它们成为同一字符串。示例:searchValue=“Interstellar”与“灰姑娘”相比,结果是5个字符发生了变化,使它们匹配 我想返回结果集,并将电影标题插入复选框文本中,并在值中插入电影ID 我用于运行此查询的vb.net代码是:在VB.NET中使用函数运行SQL查询,vb.net,Vb.net,我正在使用vb.net创建一个网站,并尝试用电影标题填充一个复选框列表。用户将输入一个电影标题,我将使用一个函数查找最接近的10个电影标题。该函数使用Lenenshtein距离算法,该算法比较两个字符串,并返回需要交换多少不同字符才能使它们成为同一字符串。示例:searchValue=“Interstellar”与“灰姑娘”相比,结果是5个字符发生了变化,使它们匹配 我想返回结果集,并将电影标题插入复选框文本中,并在值中插入电影ID 我用于运行此查询的vb.net代码是: Dim con
Dim con As New SqlConnection("MyConnectionString")
Dim dtMovieSearchResults As New DataTable
Dim daSearchDiff As New SqlDataAdapter("SELECT TOP 10 *, [dbo].[FN_Levenshtein_Distance](movie_title, @searchValue) diff FROM ML_Movie ORDER BY diff", con)
With daSearchDiff.SelectCommand.Parameters
.Clear()
.AddWithValue("@searchValue", Convert.ToString(txtSearchMovie.Text))
End With
Try
If ConnectionState.Closed Then con.Open()
daSearchDiff.Fill(dtMovieSearchResults)
With cblFoundMovies
.DataSource = dtMovieSearchResults
.DataTextField = "movie_title"
.DataValueField = "movie_id"
.DataBind()
End With
Catch ex As Exception
Response.Write(ex.Message)
Finally
con.Close()
End Try
此操作失败,并表示连接仅在几秒钟后就超时。其他数据库查询也可以工作,问题似乎与在查询中运行函数有关。然而,查询在SSMS中运行良好
我还没有找到一个具体的在线解决方案,我希望这里的人能帮助我添加一点使用…End Using Block来关闭和处理连接和命令。我不得不猜测数据类型和字段大小,因此,检查数据库并添加实际的类型和大小 我真的不认为您的代码有问题,因为查询是在SSMS中运行的。我暂时删除了Try…End Try,这样你就可以确切地看到哪里断了
Private Sub OpCode()
Dim dtMovieSearchResults As New DataTable
Using con As New SqlConnection("MyConnectionString"),
cmd As New SqlCommand("SELECT TOP 10 *, [dbo].[FN_Levenshtein_Distance](movie_title, @searchValue) diff FROM ML_Movie ORDER BY diff", con)
cmd.Parameters.Add("@searchValue", SqlDbType.VarChar, 200).Value = txtSearchMovie.Text
con.Open()
dtMovieSearchResults.Load(cmd.ExecuteReader)
End Using
With cblFoundMovies
.DataSource = dtMovieSearchResults
.DataTextField = "movie_title"
.DataValueField = "movie_id"
.DataBind()
End With
End Sub
我增加了一点使用…End使用块来关闭和处理连接和命令。我不得不猜测数据类型和字段大小,因此,检查数据库并添加实际的类型和大小 我真的不认为您的代码有问题,因为查询是在SSMS中运行的。我暂时删除了Try…End Try,这样你就可以确切地看到哪里断了
Private Sub OpCode()
Dim dtMovieSearchResults As New DataTable
Using con As New SqlConnection("MyConnectionString"),
cmd As New SqlCommand("SELECT TOP 10 *, [dbo].[FN_Levenshtein_Distance](movie_title, @searchValue) diff FROM ML_Movie ORDER BY diff", con)
cmd.Parameters.Add("@searchValue", SqlDbType.VarChar, 200).Value = txtSearchMovie.Text
con.Open()
dtMovieSearchResults.Load(cmd.ExecuteReader)
End Using
With cblFoundMovies
.DataSource = dtMovieSearchResults
.DataTextField = "movie_title"
.DataValueField = "movie_id"
.DataBind()
End With
End Sub
记录在案,这是一个比你以前的尝试更合适的问题。我现在没有答案,也没有时间解决问题,但我想说清楚,我以前并不是想变得刻薄。按照SO标准,这个问题确实不好,我感谢你的澄清。我一定会在将来添加有问题的代码,这样我的问题就不会像开放式的一样了。为了记录在案,这是一个比您以前的尝试更合适的问题。我现在没有答案,也没有时间解决问题,但我想说清楚,我以前并不是想变得刻薄。按照SO标准,这个问题确实不好,我感谢你的澄清。我一定会在将来添加有问题的代码,这样我的问题就不会像开放式的一样了!非常感谢。我现在已经准备好删除此功能。我还找到了一种方法,可以节省几秒钟的时间。但我认为我的问题可能是我添加参数的方式。你的回答非常有帮助,非常感谢你抽出时间来做这件事!非常感谢。我现在已经准备好删除此功能。我还找到了一种方法,可以节省几秒钟的时间。但我认为我的问题可能是我添加参数的方式。你的回答非常有帮助,非常感谢你抽出时间