使用sql的桌面应用程序,如Google搜索引擎

时间:2014-01-05 09:23:36

标签: sql vb.net

我正在使用Vb.net 2012和sql作为反手。 这是我的sql server数据库表,它的名字是“Timetable”

__________________________
Name | Course            |    
_____|___________________|
a    | DTP Flash AutoCad |(All these are courses with space between each courses) 
b    | PHP Asp   C#      |
c    | Flash WebDesigning|
_____|___________________|

我正在运行此SQL查询

Private Sub TxtName_TextChanged(sender As Object, e As EventArgs) Handles TxtName.TextChanged
    Try
        Dim txt As Integer = Val(Len(TxtName.Text))
        MsgBox(Val(txt))
        Dim str As String = "select FName, SurName,Courses,TotalFees,Balance,TotalDuration,DOA,DOC,Status,Time,ContactNo,ONo from TimeTable where FName='" & TxtName.Text & "' or Courses= SUBSTRING('" & TxtName.Text & "',0,50)"
        Dim ds As New DataSet
        adp = New SqlDataAdapter(str, cn)
        adp.Fill(ds)
        DataGridView1.DataSource = Nothing
        DataGridView1.Refresh()
        DataGridView1.DataSource = ds
        DataGridView1.DataSource = ds.Tables(0)

    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

End Sub

当搜索名称为
时,数据以gridview显示 但是当我用子串编写课程名称时,它不显示我...我必须写整个课程名称....即“DTP Flash AutoCad”。
我希望如果用户输入DTP,它会显示数据,即使该行包含 DTP Flash AutoCad。

2 个答案:

答案 0 :(得分:2)

查找SQL关键字LIKE。 (这绝不赞同你的设计。)

答案 1 :(得分:1)

我假设您正在使用SQL Server?不同的数据库引擎(Oracle,DB2等)有不同的方法来实现这一点。

您需要使用LIKE。或者,为了更有效的查找(假设您的SQL版本上有完整的文本索引),您可以使用CONTAINS

作为旁注,我还会调查stored proceduresparameterised queries。以您的方式运行动态SQL是一个安全问题。

为了完整性,这里是代码中的“Dim str”行,其中有一个LIKE子句用于T-SQL:

Dim str As String = "select FName, SurName,Courses,TotalFees,Balance,TotalDuration,DOA,DOC,Status,Time,ContactNo,ONo from TimeTable where FName LIKE'%" & TxtName.Text & "%' or Courses LIKE '%" & TxtName.Text & "%'"

另一方面,我几乎可以保证Google不会使用LIKE子句。事实上,我敢打赌他们甚至不使用SQL数据库 - 它更可能是某种文档存储,但我之前没有真正研究过那么多细节(我不认为这些信息)可供公众使用)。在搜索大量数据时,LIKE效率不高,而SQL也不是存储大量数据集的最佳方式。

相关问题