2009-12-04 2 views
0

Я добавил набор данных и адаптер таблицы для моего проекта C#. (Набор данных и таблица добавлены через окно DataSources) В этом запросе я получаю данные таблицы, затем фильтрую , то я буду перебирать и заполнять список.Как сделать этот запрос таблицы более эффективным

listBox1.Items.Clear(); 
ETPDataset.t_USR_UsersDataTable tbl = (new ETPDataset.t_USR_UsersDataTable()); 
ETPDatasetTableAdapters.t_USR_UsersTableAdapter tblAdap = new TestIntellisenseSql.ETPDatasetTableAdapters.t_USR_UsersTableAdapter(); 
tblAdap.Connection.ConnectionString = scon.ConnectionString; 
tblAdap.Fill(tbl); 
ETPDataset.t_USR_UsersRow[] rows2; 
rows2 = (ETPDataset.t_USR_UsersRow[])tbl.Select("USR_RECORDID > 60"); 
foreach (ETPDataset.t_USR_UsersRow drow in rows2) 
{ 
listBox1.Items.Add(drow.USR_UserID); 
} 

Это моя проблема

tblAdap.Fill(tbl); 

, потому что эта строка кода будет получать все данные (проблемные для больших таблиц), как я могу это исправить? -Скорость

ответ

2

Создайте новый способ на вашем адаптере, чтобы использовать предложение where для фильтрации данных в базе данных.

+0

Нет смысла извлекать все данные из базы данных и фильтровать их в программе. Есть ли какие-либо проблемы, которые вы не можете фильтровать «USR_RECORDID> 60» в базе данных? –

+0

После того, как вы добавили фильтр в адаптер, метод Fill() примет значение в качестве параметра, то есть Fill (USR_ID) – invert

+0

Отредактируйте свой набор данных в дизайнере, r-щелкните таблицу данных и выберите «Настроить». В запросе вставьте свой параметр (@ID), нажмите «Готово». – invert