Как метод SQLDataAdapter Fill запускает запросы к базе данных? - PullRequest
0 голосов
/ 08 декабря 2011

У меня есть запрос на понимание метода заполнения SQLDataAdapter, который принимает такие аргументы, как startRecord, MaxRecord, как показано ниже -

SqlDataAdapter adap = new SqlDataAdapter ("Select * from tblname",ConnectionString);
DataSet ds = new DataSet();
adap.Fill(ds, startIndex, MaxRecords , "TableName");

Я хочу знать, что будет делать SqlDataAdapter.

Сначала будет запущен запрос, который вернет всю запись из таблицы, а затем отфильтрует строки из нее?

или

Будет ли запущен запрос в базе данных, который выберет только необходимое количество строк?

Ответы [ 2 ]

0 голосов
/ 08 декабря 2011

sqlDataAdapter.Fill(dataSet, currentIndex, pageSize, "TableName"); запросит весь набор результатов и затем поместит их в память в памяти.

Для больших наборов результатов это не то, что вам нужно. Если вы хотите, чтобы подкачка происходила на сервере, используйте предложения SKIP и TOP в используемом вами SQL.

Здесь - документация, объясняющая это.

0 голосов
/ 08 декабря 2011

SqlDataAdapter служит мостом с DataSet и SQL Server для извлечения и сохранения данных. Когда SqlDataAdapter заполняет DataSet, он создает необходимые таблицы и столбцы для возвращаемых данных, если они еще не существуют.

Это фрагмент кода, который поможет вам лучше понять

string sqlStatement = "Select * from tblname ";
                SqlCommand cmd = new SqlCommand(sqlStatement, con);
                DataSet ds = new DataSet();

                SqlDataAdapter adap = new SqlDataAdapter(cmd);
                cmd.ExecuteNonQuery();
                adap.Fill(ds);
...