2016-11-04 114 views
0

缓存的DataGridView行:如何我使用SQLite语句从这样的数据库中检索数据从SQLite数据库

SQLiteConnection sqlConnection; 
SQLiteCommand sqlCMD; 
SQLiteDataReader sqlReader; 
sqlConnection = new SQLiteConnection("Data Source=newlist.db;Version=3;New=False;Compress=True;"); 
sqlCMD = sqlConnection.CreateCommand(); 
sqlCMD.CommandText = "SELECT * FROM table_name"; 
sqlReader = sqlCMD.ExecuteReader(); 
while (sqlReader.Read()) 
{ 
    //do stuff 
} 

所以整个SQLite表装入DataDridView(grid_list)我用下面的语句中sqlReader.Read()

grid_list.Rows.Add(); 
grid_list.Rows[index].Cells[0].Value = sqlReader.GetString(0); 
grid_list.Rows[index].Cells[1].Value = sqlReader.GetString(1); 
grid_list.Rows[index].Cells[2].Value = sqlReader.GetString(2); 

并且它导致期望的输出,但是当涉及到大的文件,如约100 MB或以上,它使UI慢,所以我如何显示在块这些表,就像一个源代码文本编辑器(例如, g:崇高文字3)。

因此,在总结: 如何通过块从数据库中显示一个DataGridView行块,而不是一次全部装入了整个数据到内存

+0

使用[VirtualMode](https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.virtualmode(v = vs.110).aspx)。请参阅[这里](https://msdn.microsoft.com/en-us/library/ms171621(v = vs.110).aspx)。 –

回答

0

发现一个Article完美地回答关于虚拟模式,同时使用SQLite这个问题数据库作为数据源,这篇文章带有一个源代码,它将帮助你在partice

而且我发现了另一个article这将有助于解决这个问题。

+0

在这篇文章中没有关于'VirtualMode'的文字。虽然这种方法也适用。 –

+0

@AlexanderPetrov究竟为什么我选择它 –