首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂的报表要求SQL C#不返回任何行

复杂的报表要求SQL C#不返回任何行
EN

Stack Overflow用户
提问于 2016-06-25 21:54:53
回答 2查看 44关注 0票数 0

这就是问题所在。我要写一份冗长的、非常复杂的报告。我认为我不能只使用C#来完成这个任务,所以我认为最好的方法是使用一个临时的SQL表。因此,我编写了这段代码,我始终没有得到任何行,而且我知道表中有数据。

代码语言:javascript
复制
        SqlConnection connection = new SqlConnection(connectionString);
        SqlCommand cmd = new SqlCommand();
        SqlDataReader reader;

        cmd.CommandText = "SELECT * INTO ##temp FROM Customers";
        cmd.Connection = connection;
        connection.Open();

        reader = cmd.ExecuteReader();

        if (reader.HasRows)
        { MessageBox.Show("ROWS"); }
        else
        { MessageBox.Show("NO ROWS"); }

        connection.Close();

所以我想,也许我需要另一个阅读器从##TEMP中选择*,但是它总是会崩溃,告诉我我的阅读器已经打开了(我使用了reader = cmd.ExecuteReader();)。请帮帮忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-26 00:17:59

我找到了答案:

代码语言:javascript
复制
        cmd.Connection = connection;
        connection.Open();
        cmd.ExecuteNonQuery();
        cmd.CommandText = "SELECT * from ##temp";
        reader = cmd.ExecuteReader();

首先运行ExecuteNonQuery,然后更改命令,然后运行ExecuteReader

票数 0
EN

Stack Overflow用户

发布于 2016-06-26 01:03:07

你的问题不能证明使用临时表是合理的。您没有理由不直接从实际表中读取数据(除非您的问题忽略了重要的相关细节)。

此外,最好养成使用using块处理db对象的习惯,以便即使在出现异常时也能正确清理。

下面是代码的样子:

代码语言:javascript
复制
using (var connection = new SqlConnection(connectionString))
{
    using (var cmd = new SqlCommand("SELECT * FROM Customers", connection))
    {
        connection.Open();

        using (var reader = cmd.ExecuteReader())
        {
            if (reader.HasRows)
            {
                MessageBox.Show("ROWS");
            }
            else
            {
                MessageBox.Show("NO ROWS");
            }
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38033299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档