复杂的报告需要 SQL 临时文件 C# Returns 无行
Complicated Report Requires SQL Temp File C# Returns No Rows
问题来了。我必须写一份很长很复杂的报告。我不认为我可以只使用 C# 来做到这一点,所以我认为最好的办法是临时 SQL table。所以我写了这段代码,但总是没有行,我知道 table.
中有数据
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();
所以我想,也许我需要另一个 reader 到 SELECT * FROM ##TEMP 但它总是崩溃告诉我我的 reader 已经打开(我使用 reader = cmd.ExecuteReader();).请帮忙。
我找到了答案:
cmd.Connection = connection;
connection.Open();
cmd.ExecuteNonQuery();
cmd.CommandText = "SELECT * from ##temp";
reader = cmd.ExecuteReader();
首先运行 ExecuteNonQuery,然后更改命令然后运行 ExecuteReader
您的问题无法证明使用临时 table 是合理的。您真的没有理由不直接从实际 table 中简单地读取数据(除非您的问题省略了重要和相关的细节)。
此外,最好养成使用 using
块处理数据库对象的习惯,以便即使在发生异常时也能正确清理。
代码可能如下所示:
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");
}
}
}
}
问题来了。我必须写一份很长很复杂的报告。我不认为我可以只使用 C# 来做到这一点,所以我认为最好的办法是临时 SQL table。所以我写了这段代码,但总是没有行,我知道 table.
中有数据 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();
所以我想,也许我需要另一个 reader 到 SELECT * FROM ##TEMP 但它总是崩溃告诉我我的 reader 已经打开(我使用 reader = cmd.ExecuteReader();).请帮忙。
我找到了答案:
cmd.Connection = connection;
connection.Open();
cmd.ExecuteNonQuery();
cmd.CommandText = "SELECT * from ##temp";
reader = cmd.ExecuteReader();
首先运行 ExecuteNonQuery,然后更改命令然后运行 ExecuteReader
您的问题无法证明使用临时 table 是合理的。您真的没有理由不直接从实际 table 中简单地读取数据(除非您的问题省略了重要和相关的细节)。
此外,最好养成使用 using
块处理数据库对象的习惯,以便即使在发生异常时也能正确清理。
代码可能如下所示:
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");
}
}
}
}