C# 如何在不下载所有数据的情况下连接ODBC并显示“大表”
我尝试在我的程序中通过ODBC进行连接,以显示具有100000行和20列700MB的表。这个程序只是一个数据库查看器,它应该尽可能快,并且一次不必显示超过30-50条记录 我认为ODBC连接只会在需要显示记录时自动调用数据库,就像DataGrid项目上的虚拟化对内存的作用一样,但实际上并非如此。 当我使用查询时,比如 从BigTable中选择* 我的程序开始下载整个表并将其加载到内存中。 有没有办法只加载对我可见的记录,而不将所有表下载到内存中?但当我向下或向上滚动DataGrid中的任何一行时,会毫不停顿地加载显示下一行 这是我打开、关闭ODBC连接并将datatable绑定到DataGrid的代码C# 如何在不下载所有数据的情况下连接ODBC并显示“大表”,c#,wpf,datagrid,odbc,C#,Wpf,Datagrid,Odbc,我尝试在我的程序中通过ODBC进行连接,以显示具有100000行和20列700MB的表。这个程序只是一个数据库查看器,它应该尽可能快,并且一次不必显示超过30-50条记录 我认为ODBC连接只会在需要显示记录时自动调用数据库,就像DataGrid项目上的虚拟化对内存的作用一样,但实际上并非如此。 当我使用查询时,比如 从BigTable中选择* 我的程序开始下载整个表并将其加载到内存中。 有没有办法只加载对我可见的记录,而不将所有表下载到内存中?但当我向下或向上滚动DataGrid中的任何一行时
using (OdbcConnection con = new OdbcConnection("DSN=" + sourceDriver.SelectedValue.ToString() + ";UID=myLogin;PWD=myPSWD" ))
using (OdbcDataAdapter dadapter = new OdbcDataAdapter(command, con))
{
try
{
DataTable table = new DataTable();
dadapter.Fill(table);
dataTable.ItemsSource = null;
dataTable.Items.Clear();
dataTable.ItemsSource = table.DefaultView;
dataTable.Items.Refresh();
table = null;
}
catch ( Exception e )
{
MessageBox.Show(e.Message);
}
}
}
谢谢你的帮助
问候
另外,这段代码不是很漂亮,没有实现更好的异常处理,但它是我未来工作的基础。不要拉所有列,而是决定需要哪些列,然后进行分页。定义页面大小,从/到等。感谢您的快速回答。填充就是这样。在完成之前,它不会进入下一行。Fill甚至不知道datatable。