【发布时间】:2016-11-02 13:53:24
【问题描述】:
我正在构建一个应用程序,在该应用程序中,我将根据针对多个不同数据库和服务器执行的一些 SQL 查询的结果生成一些报告。由于我无法在每台服务器上创建存储过程,我将我的 SQL 脚本保存在本地,将它们加载到我的 C# 应用程序中,并使用 ADO.NET 对每台服务器执行它们。所有的 SQL 脚本都是返回表的选择,但是,其中一些比其他的更复杂,并且涉及对要连接的表变量的多个选择,如下面的超级基本示例。
我的问题是,使用 ADO.NET,是否可以分配多个 SQL 查询的字符串,最终只将单个数据表返回给 SqlCommand 对象 - 例如下面的两个 SELECT 语句构成了我的完整脚本?还是我必须创建一个事务并将每个单独的查询作为自己的命令单独执行?
-- First Select
SELECT *
INTO #temp
FROM Table1;
--Second Select
SELECT *
FROM Table1
JOIN #temp
ON Table1.Id = #temp.Id;
此外,我的一些脚本中嵌入了 cmets,就像上面的基本示例一样 - 这些是需要删除还是在字符串中被有效地忽略?这似乎适用于单个查询,换句话说,“--This is a comment”被有效地忽略了。
private void button1_Click(object sender, EventArgs e)
{
string ConnectionString = "Server=server1;Database=test1;Trusted_Connection=True";
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
SqlCommand cmd = new SqlCommand("--This is a comment \n SELECT TOP 10 * FROM dbo.Tablw1;");
DataTable dt = new DataTable();
SqlDataAdapter sqlAdapt = new SqlDataAdapter(cmd.CommandText.ToString(), conn);
sqlAdapt.Fill(dt);
MessageBox.Show(dt.Rows.Count.ToString());
}
}
【问题讨论】:
-
我相信你可以,但你为什么不试试呢?为什么要问一个您可以通过简单的测试轻松回答的问题?
-
@ScottHannen,我认为您误读了这个问题。他的多语句命令只会产生一个结果集。
-
你是对的。我做到了。
标签: c# sql-server ado.net