2015-09-05 41 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

相关问题