2016-05-13 4 views
1

Мне нужно загрузить данные из SQLite, а затем отобразить данные в DataTable для отображения в DataGridView. Текущий подход, который я использую, - это чтение данных из DataReader, затем цикл через reader.Read() для создания каждого DataRow.C# - самый быстрый способ вставить значение из DataReader в DataGridView

Производительность медленная для метода выше, потому что у меня 600 строк строк строки данных. Я попытался использовать dataTable.Load (reader), но он даже медленный, чем предыдущий. Есть ли самый быстрый способ добавить данные из SQLite в DataTable.

SQLiteCommand command = new SQLiteCommand(sql, connection); 
SQLiteDataReader reader = command.ExecuteReader(); 
while(reader.Read()) 
{ 
    DataRow dRow = dataTable.NewRow(); 
    dRow[''] = reader[''].ToString(); 
    ...... 
    ...... 
    ...... 
    dataTable.Rows.Add(dRow); 
} 
+1

Что ваши результаты Google сказал? –

+0

До сих пор google велел мне использовать dataTable.Load (reader), но, как я уже говорил, он медленнее предыдущего –

+0

, если вы пытаетесь загрузить слишком много информации, попробуйте использовать подкачку в своей хранимой процедуре и получите только требуемое значение строки из базы данных – techspider

ответ

0

Это вариант, который вам может быть неинтересен.

Что вы делаете сейчас, один за другим, вводя 600 000 значений в каждый столбец строки (dataTable), и если столбцы новой строки полностью вставлены, новая строка добавляется в DataTable.

Ваш код внутри цикла чтения просто создает новую строку и добавляет ее в dataTable.

Если вам не нужно манипулировать каждое значение при чтении цикла, что означает, что вам нужно только ДАННЫЕ, как они,

SQLiteCommand command = new SQLiteCommand(sql, connection); 
SqlDataAdapter da = new SqlDataAdapter(commmand); 

da.Fill(dataTable); 
dataGridView.ItemsSource= dt.DefaultView; 
+0

Почему вы создаете «Адаптер» выше? Адаптеры должны заменить низкоуровневые контуры считывателей. Если вы используете 'Adapter.Fill()', вы должны удалить объект 'reader', а также цикл из кода выше. – dotNET

+0

Я также удалил SqlDataReader и код цикла. –

+0

Возможно, я был недостаточно ясен. Я говорю, что вы либо используете «DataAdapter», либо используете 'SqlCommand' +' SqlDataReader'. Вы не используете их оба. – dotNET