Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何搜索所有SQL表&;是否在多行文本框中显示行?_Sql Server_Vb.net - Fatal编程技术网

Sql server 如何搜索所有SQL表&;是否在多行文本框中显示行?

Sql server 如何搜索所有SQL表&;是否在多行文本框中显示行?,sql-server,vb.net,Sql Server,Vb.net,我有多个SQL表,我用它们填充整个应用程序中的数据网格视图和文本框。我想在应用程序的主页上创建一个全局搜索功能,从搜索框中搜索所有表格,并将其显示在文本框中。我不知道从哪里开始。文本框仅用于查看详细信息,无需保存、编辑或删除。我现在有一个搜索框和一个搜索按钮,然后是一个名为结果的文本框 这就是我得到的 Private子GlobalSearchbtn\u单击(发送者作为对象,e作为事件参数)处理GlobalSearchbtn。单击 尝试 康涅狄格州公开赛 将sql1设置为字符串 sql1=“从sy

我有多个SQL表,我用它们填充整个应用程序中的数据网格视图和文本框。我想在应用程序的主页上创建一个全局搜索功能,从搜索框中搜索所有表格,并将其显示在文本框中。我不知道从哪里开始。文本框仅用于查看详细信息,无需保存、编辑或删除。我现在有一个搜索框和一个搜索按钮,然后是一个名为
结果
的文本框

这就是我得到的

Private子GlobalSearchbtn\u单击(发送者作为对象,e作为事件参数)处理GlobalSearchbtn。单击
尝试
康涅狄格州公开赛
将sql1设置为字符串
sql1=“从sys.objects中选择*,其中的类型为“”&txtlobalsearch.Text&“%””
cmd=新的SqlCommand(sql1,conn)
reader=cmd.ExecuteReader
边读边读
txtresults.Text=读取器(1).Tostring
结束时
康涅狄格州关闭
特例
MessageBox.Show(例如Message)
结束尝试
端接头

必须循环数据库中的所有表。然后,对于每个表,您必须检索所有字段,然后选择varchar/nvarchar字段。最后,您必须构建一个动态请求来查询此表中此字段的结果

我不能给你写下你必须做的事情,但我可以给你写一个算法的例子

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

是否要为txtlobalSearch.Text值查找任何表中的每个varchar/nvarchar字段?是的,不应该有太多匹配项,因为表不广泛。是否可以在文本框中显示多个表格行?它的格式是否怪异其实并不重要。还是使用gridview的唯一方法?诚然,这并不难,但我不认为这是一种有效的方法。我正在为你写答案,我很感激!这是一个不会经常使用的功能,但如果他们无法使用我的导航找到它,那么它将证明它就在那里的某个地方。如果他们找不到它,我建议看看你是如何建立关系的;主键/外键/约束等。。。这是糟糕的设计,如果你打算用它做任何事情,就要在今后提出问题。你为什么要搜索整个数据库?嗨,谢谢你的例子。对象类型的字段是否为列?或者它会自动搜索所有列吗?对不起,我不懂这个代码。请原谅,我对vb.net很陌生。你能简化一下吗?这是在vb.net中吗?TypeOfObject的字段应该是什么?很抱歉,我使用的是MS SQL,我的标记不正确。我道歉!