有效的SQL Server查询在System.Data.SqlClient.SqlCommand中返回空



这是我的查询,它是关于2014年冒险作品的。

DECLARE @l_RunSQL VARCHAR(MAX);
SELECT @l_RunSQL = COALESCE(@l_RunSQL + ' UNION ALL SELECT * FROM [', 'SELECT * FROM [') + TABLE_SCHEMA +'].['+ TABLE_NAME+']'
FROM INFORMATION_SCHEMA.TABLES
WHERE [TABLE_TYPE] = 'BASE TABLE'
AND [TABLE_NAME] LIKE 'Address';
EXEC (@l_RunSQL)
WITH RESULT SETS
(
(
[AddressID] [INT],
[AddressLine1] [NVARCHAR](60),
[AddressLine2] [NVARCHAR](60),
[City] [NVARCHAR](30),
[StateProvinceID] [INT],
[PostalCode] [NVARCHAR](15),
[SpatialLocation] [GEOGRAPHY],
[rowguid] [UNIQUEIDENTIFIER],
[ModifiedDate] [DATETIME]
)
);

我可以在SSMS中运行此操作,并根据需要获得Person.Address表的内容。

在C#中,我创建一个连接节点,然后创建一个命令节点,并尝试执行如下查询:

using (var reader = command.ExecuteReader(CommandBehavior.SchemaOnly))
{
schemaTable = reader.GetSchemaTable();
}

读者的结果是空的。为什么此命令在SSMS中有效,但不使用C#?

连接类型为System.Data.SqlClient.SqlConnection,命令类型为System.Data.SqlClient.SqlCommand

如有任何帮助,将不胜感激

这是因为您使用CommandBehavior.SchemaOnly执行,它只返回列信息,不返回数据,请参阅文档。

查询仅返回列信息。当使用SchemaOnly时,SQL Server的.NET Framework数据提供程序在使用SET FMTONLY ON.执行的语句之前

要访问查询返回的数据,只需执行以下操作。

using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
// Access your data here
Console.WriteLine(String.Format("{0}", reader[0])); // Column AddressID
// ...
}
}

相关内容

  • 没有找到相关文章

最新更新