C# WinForms中DataGridView无法按日期倒序显示accdb最新15条记录
解决DataGridView显示Access最新15条记录并倒序的问题
你的核心问题出在SQL查询语句上:
- 未指定倒序排序,
order by Date默认是升序(从旧到新); Date是Access的保留关键字,直接使用可能引发语法冲突,建议用方括号包裹。
修正后的查询代码
把原SQL语句修改为:
void fillgrid() { con.Open(); // 用[Date]避免关键字冲突,加DESC实现倒序,取最新15条 OleDbDataAdapter da = new OleDbDataAdapter("select top 15 * from Records order by [Date] DESC", con); DataTable dt = new DataTable(); da.Fill(dt); dataGridView2.DataSource = dt; con.Close(); }
为什么数据库内调整排序无效?
Access表的默认排序仅在直接打开表时生效,通过OleDb执行查询时,DataGridView完全依赖SQL语句返回的结果顺序,不会读取表的默认排序设置。必须在查询语句中明确指定order by ... DESC才能得到倒序结果。
额外优化建议
为避免连接资源泄漏,推荐使用using语句自动管理连接对象:
void fillgrid() { // using会自动释放连接,无需手动Close using (OleDbConnection tempCon = new OleDbConnection(con.ConnectionString)) { tempCon.Open(); OleDbDataAdapter da = new OleDbDataAdapter("select top 15 * from Records order by [Date] DESC", tempCon); DataTable dt = new DataTable(); da.Fill(dt); dataGridView2.DataSource = dt; } }
内容的提问来源于stack exchange,提问作者Remaker Shadow
相关产品推荐
相关产品推荐

