在文本框显示程序

时间:2017-11-27 05:41:02

标签: c# sql sql-server ssms

我有一个用c#编写的简单程序。它的主要目的是进行数据存档。下面是程序外观的快照。

enter image description here

如图所示,无论何时单击按钮,消息都将显示在程序左侧的大文本框中。现在,我正在实现另一个名为Row Count的按钮。此功能的目的是当我单击该按钮时,它将执行我的一个SQL脚本,并将表格中的计数数量显示在文本框中。

在SQL脚本中包含多个表的行计数查询,而不仅仅是一个行计数查询。以下是它的片段:

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服务器中获取结果,但结果显示在我的程序文本框中。任何建议都会有所帮助。

这也是我的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));


            }

1 个答案:

答案 0 :(得分:0)

在SQL中编写存储过程并将计数返回到前端。 可以从下面的代码中调用SP,其中Execute_StoredPro是我的SP名称,runTests是我的连接

        SqlCommand spcmd = new SqlCommand("Execute_StoredPro", runTests);
        spcmd.CommandTimeout = 0;
        spcmd.CommandType = CommandType.StoredProcedure;
        spcmd.ExecuteNonQuery();