2015-09-05 69 views
0

我有多個SQL表,我用它來填充我的應用程序中的數據網格視圖和文本框。我想在應用程序的主頁上創建一個全局搜索功能,從搜索框中搜索所有表格並將其顯示在文本框中。我不知道從哪裏開始。文本框只是查看細節,不需要保存,編輯或刪除。我目前有一個搜索框和一個搜索按鈕,然後是一個名爲results的文本框。如何搜索多行文本框中的所有SQL表格和顯示行?

這是我的本錢..

Private Sub GlobalSearchbtn_Click(sender As Object, e As EventArgs) Handles GlobalSearchbtn.Click 
    Try 
     conn.Open() 
     Dim sql1 As String 
     sql1 = "SELECT * from sys.objects where type like '" & txtGlobalsearch.Text & "%'" 
     cmd = New SqlCommand(sql1, conn) 
     reader = cmd.ExecuteReader 
     While reader.Read 
      txtresults.Text = reader(1).Tostring 
     End While 
     conn.Close() 
    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    End Try 
End Sub 
+0

做的一個例子.Text值? –

+0

是的,不應該有很多匹配,因爲這些表並不廣泛。可以在文本框中顯示多個表格行嗎?如果它的格式很奇怪,它並不重要。或者是使用gridview的唯一方法? – Matt

+0

誠摯的,這並不難,但我不認爲這是一種有效的做事方式。我正在爲你寫答案 –

回答

-1

您必須對您的所有存在於數據庫中的表環。然後,對於每個表,您必須檢索所有字段,然後選擇varchar/nvarchar。最後你必須建立一個動態的請求來查詢這個表中這個字段的結果。

我不能給你寫你必須做什麼,但我可以給你寫一個algorythm要尋找一切爲varchar/nvarchar的字段爲txtGlobalSearch任何表

var tableQuery = "SELECT * FROM sys.objects WHERE [FieldForTheTypeOfTheObject] = 'table'" 
//execute and loop on each table 
foreach table in tableQueryResult 
    var fieldQuery = "SELECT * FROM [sys.objects or maybe another table] WHERE [FieldOfTheTypeOfTheObject] = 'field'" 
    foreach field in fieldQueryResult 
     if(field.Type == 'varchar' || field.Type == 'nvarchar') then 
      var finalQuery = "SELECT * FROM " & table.Name & " WHERE " & field.Name & " like '%" & txtGlobalsearch.Text.Replace("'", "''") & "&'" 
      //Execute query and display data 
     endif 
    end 
end 
+0

嗨,謝謝你的例子。 FieldForTheTypeOfTheObject是那個列?還是會自動搜索所有列? – Matt

+1

對不起,我無法理解這段代碼。請原諒我,我對vb.net很陌生。你能簡化嗎?這是在vb.net? 對象的類型應該是什麼? – Matt

+0

對不起,我正在使用MS SQL,我標記不正確。我很抱歉! – Matt

相關問題