【发布时间】:2017-11-27 05:41:01
【问题描述】:
我有一个用 c# 编写的简单程序。它的主要目的是用于数据归档。下面是程序外观的快照。
如图所示,每当单击按钮时,程序左侧的大文本框中都会显示消息。现在,我正在实现另一个名为 Row Count 的按钮。此函数的目的是当我单击该按钮时,它将执行我的一个 SQL 脚本并将表格中的计数显示到文本框中。
在该 SQL 脚本中包含针对多个表的行计数查询,而不仅仅是一个行计数查询。这是它的一个sn-p:
SELECT COUNT(*) AS [PromotionEventRows] FROM PromotionEvent (NOLOCK)
select top 1 EventCode as [PE - PE Code], LastChangeDate FROM PromotionEvent (NOLOCK) ORDER BY LastChangeDate DESC
SELECT COUNT(*) AS [PromotionBenefitRows] FROM PromotionBenefit (NOLOCK)
select top 1 PromotionBenefitCode as [PB - PB Code], LastChangeDate FROM PromotionBenefit (NOLOCK) ORDER BY LastChangeDate DESC
SELECT COUNT(*) AS [CardTypeBenefitRows] FROM CardTypeBenefit (NOLOCK)
select top 1 CardTypeBenefitID, LastChangeDate FROM CardTypeBenefit (NOLOCK) ORDER BY LastChangeDate DESC
我知道有一种方法 ExecuteScalar 可以完成此操作,但这里的问题是我不想在我的 c# 代码中编写 SQl 查询。相反,我希望我的程序读取该脚本并在程序的文本显示中显示计数。可以将其想象为在 SQL Server 中获取结果,但结果显示在我的程序文本框中。任何建议都会有所帮助。
这也是我的 C# 代码的一部分:
try
{
using (SqlConnection con = new SqlConnection(constr))
{
con.Open();
FileInfo file = new FileInfo("Directory of that SQL script");
string script = file.OpenText().ReadToEnd();
Server server = new Server(new ServerConnection(con));
server.ConnectionContext.ExecuteNonQuery(script);
Display("Whatever message display on textbox");
con.Close();
}
}
catch (Exception ex)
{
textBox1.AppendText(string.Format("{0}", Environment.NewLine));
textBox1.AppendText(string.Format("{0} MainPage_Load() exception - {1}{2}", _strThisAppName, ex.Message, Environment.NewLine));
Display(ex.Message + "message");
textBox1.AppendText(string.Format("{0}", Environment.NewLine));
Debug.WriteLine(string.Format("{0} MainPage_Load() exception - {1}", _strThisAppName, ex.Message));
}
【问题讨论】:
-
那么你的代码有什么问题?
-
没问题,我只是想不出如何实现我想要的方式。
-
您是否能够通过执行脚本获得结果?如果是,您是否成功迭代以获得多个结果? -- 从逻辑上讲,您获得解决方案的概念是可以的,但是您正在努力的具体细节尚不清楚。
-
我绝对可以成功执行脚本。例如,在我的快照中,当我单击创建表时,它将在我的 SQL 服务器中创建一个表列表,并且在文本显示旁边,它会显示诸如表 A 已创建、表 B 已创建...等消息。 . 因为我告诉我的程序在文本框上显示这些消息。现在唯一的问题是执行此脚本以在我的文本框中实时返回行数。
-
如果我只是运行脚本,我不会在我的文本框中看到任何消息显示,我的目标是让它们在运行时显示在文本框中。我够清楚了吗?
标签: c# sql sql-server ssms