这是问题所在。我必须写一篇很长的,复杂的报告。我不认为我只能使用C#这样做,所以我认为最好的是一个临时的SQL表。所以我写了这段代码,我总是没有行,我知道表中有数据。
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();
所以我想,也许我需要另一个读者来SELECT * FROM ## TEMP但它总是崩溃告诉我我的读者已经打开(我使用reader = cmd.ExecuteReader();)。请帮忙。
答案 0 :(得分:0)
我找到了答案:
cmd.Connection = connection;
connection.Open();
cmd.ExecuteNonQuery();
cmd.CommandText = "SELECT * from ##temp";
reader = cmd.ExecuteReader();
首先运行ExecuteNonQuery,然后更改命令,然后运行ExecuteReader
答案 1 :(得分:0)
您的问题无法证明使用临时表是正确的。你没有理由不直接从实际表中读取数据(除非你的问题省略了重要和相关的细节)。
此外,养成使用using
块处理db对象的习惯是一个好主意,即使在异常情况下也能正确清理。
这是代码的样子:
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");
}
}
}
}