2014-01-05 48 views
0

我使用Vb.net 2012與SQL作爲反手。 這是我的SQL Server數據庫表的名稱是「時間表」像谷歌搜索引擎的SQL桌面應用程序

 
__________________________ 
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。

+0

作爲便箋,請見[Bobby Tables](http://stackoverflow.com/q/332365/11683)。 – GSerg

回答

2

查找SQL關鍵字LIKE。 (這不會支持你的設計。)

1

我假設你正在使用SQL Server?不同的數據庫引擎(Oracle,DB2等)有不同的方式來執行此操作。您需要使用LIKE。或者,爲了更高效地查找(如果您的SQL版本中提供了FULL TEXT INDEXING),則可以使用CONTAINS

作爲一個側面說明的一點,我也會看看stored proceduresparameterised queries。以這種方式運行動態SQL是一個安全問題。

爲了完整起見,這裏是你的代碼中「昏暗的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也不是存儲大量數據集的最佳方式。

+0

thnk u spikeh ..你的查詢工作... :)我一定會在你的建議工作...我需要部署這個應用程序在其他電腦...請指導我的程序。因爲它會產生路徑錯誤。 .. !!請儘量幫助這個編程世界......! –