这就是问题所在。我要写一份冗长的、非常复杂的报告。我认为我不能只使用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();所以我想,也许我需要另一个阅读器从##TEMP中选择*,但是它总是会崩溃,告诉我我的阅读器已经打开了(我使用了reader = cmd.ExecuteReader();)。请帮帮忙。
发布于 2016-06-26 00:17:59
我找到了答案:
cmd.Connection = connection;
connection.Open();
cmd.ExecuteNonQuery();
cmd.CommandText = "SELECT * from ##temp";
reader = cmd.ExecuteReader();首先运行ExecuteNonQuery,然后更改命令,然后运行ExecuteReader
发布于 2016-06-26 01:03:07
你的问题不能证明使用临时表是合理的。您没有理由不直接从实际表中读取数据(除非您的问题忽略了重要的相关细节)。
此外,最好养成使用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");
}
}
}
}https://stackoverflow.com/questions/38033299
复制相似问题