C# C如何在一个Datagridview中显示多个数据库表?

C# C如何在一个Datagridview中显示多个数据库表?,c#,sql,C#,Sql,我的Windows窗体应用程序上有一个datagridview和Show按钮。在datagridview中,我想显示多个数据库的表,但使用我的sql代码,我只显示当前的数据库表。如何显示所有数据库的表 SELECT TABLE_CATALOG AS 'DATABASE Name', TABLE_SCHEMA AS 'SCHEMA Name', TABLE_NAME AS 'TABLO Name' FROM INFORMATION_SCHEMA.TABLES 您

我的Windows窗体应用程序上有一个datagridview和Show按钮。在datagridview中,我想显示多个数据库的表,但使用我的sql代码,我只显示当前的数据库表。如何显示所有数据库的表

SELECT TABLE_CATALOG AS 'DATABASE Name', 
       TABLE_SCHEMA AS 'SCHEMA Name', 
       TABLE_NAME AS 'TABLO Name' 
FROM INFORMATION_SCHEMA.TABLES

您可以使用SQL语法table1连接table2来显示多个表。如果您不能使用多个SQL查询为一个表提供数据,然后将其设置为datagrid的ItemsSource,则Windows中的名称可能与WPF中的名称有所不同。

一种方法是使用

网站摘录:

6未记录存储过程sp_MSforeachdb的常见用法

打印SQL Server实例中的所有数据库名称 打印SQL Server实例的所有数据库中的所有表 显示SQL Server实例中所有数据库的大小 确定SQL Server实例中所有数据库的所有物理名称和属性大小、增长和使用情况 将所有数据库的所有者更改为“sa” 检查数据库中所有对象的逻辑和物理完整性
最好将整个过程包装在存储过程中。强烈建议您避免在生产环境中使用SQL Server的未记录功能。

您可以在数据集中的两个数据表之间建立关系。如果要在datagridview中显示多个数据表,请将它们合并在一起,或者最好在SQL中执行联合或内部联接
/* Create temp table to hold result */
Declare @blackFrog as Table
(
    [DATABASE Name] [nvarchar](128) NULL,
    [SCHEMA Name] [sysname] NULL,
    [TABLE Name] [sysname] NOT NULL
);

DECLARE @command varchar(1000) /* create the command you want to execute on all databases */
SELECT @command = 'IF ''?'' NOT IN(''master'', ''model'', ''msdb'', ''tempdb'') 
            BEGIN USE ? SELECT TABLE_CATALOG AS ''DATABASE Name'', 
            TABLE_SCHEMA AS ''SCHEMA Name'', TABLE_NAME AS ''TABLE Name'' FROM 
INFORMATION_SCHEMA.TABLES; END' 

Insert Into @blackFrog EXEC sp_MSforeachdb @command;

Select * From @blackFrog