运行查询之前的记录计数-C#
本文关键字:-C# 记录 查询 运行 | 更新日期: 2023-09-27 18:07:54
全部,
我需要一些帮助。我一直在构建一个windows窗体应用程序,它根据选择的组单选框条目执行一些sql查询。当它运行一个大集合时,我注意到一些"缓慢",所以我想1(提示用户,2(警告他们以下计数。
这是我的东西。任何改进建议:
if(rdbDate.Checked)
{
SqlDataAdapter adapter = new SqlDataAdapter("select * from TABLE where ORDER_DATE between @mindate and @maxdate", myConnection);
adapter.SelectCommand.Parameters.AddWithValue("@mindate", dtFromDate.Value.Date);
adapter.SelectCommand.Parameters.AddWithValue("@maxdate", dtToDate.Value.Date);
DataTable t = new DataTable();
adapter.Fill(t);
if(t.Rows.Count>10000)
{
DialogResult msgresult = MessageBox.Show("Warning your query returned "
+ t.Rows.Count +
" are you sure you want to continue?",
"Question",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
if (msgresult == DialogResult.No)
{
return;
}
}
dataGridView1.DataSource = t;
}
我需要为每个单选按钮重复此操作。我还认为是执行查询来获取计数吗?如果可能的话,我更愿意进行选择计数(*(,然后运行查询?
提前感谢
Xathras
获取记录数并提示用户:
if(rdbDate.Checked)
{
int numberOfRecords;
using (SqlCommand cmd = new SqlCommand("select count(*) from TABLE where ORDER_DATE between @mindate and @maxdate", myConnection)
{
cmd.Parameters.AddWithValue("@mindate", dtFromDate.Value.Date);
cmd.Parameters.AddWithValue("@maxdate", dtToDate.Value.Date);
numberOfRecords = cmd.ExecuteScalar();
}
if(numberOfRecords >10000)
{
DialogResult msgresult = MessageBox.Show("Warning your query returned "
+ t.Rows.Count +
" are you sure you want to continue?",
"Question",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
if (msgresult == DialogResult.No)
{
return;
}
}
SqlDataAdapter adapter = new SqlDataAdapter("select * from TABLE where ORDER_DATE between @mindate and @maxdate", myConnection);
adapter.SelectCommand.Parameters.AddWithValue("@mindate", dtFromDate.Value.Date);
adapter.SelectCommand.Parameters.AddWithValue("@maxdate", dtToDate.Value.Date);
DataTable t = new DataTable();
adapter.Fill(t);
}
由于行计数不是在填充数据集的可序列化事务内部执行的,因此可以想象,记录计数可能与数据集中的行数不同——例如,如果同时插入数据。但是,如果用例将其视为批处理操作,那么这可能不是您需要编码的内容。