Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

SqlDataReader i DataGrid

[es] :: .NET :: SqlDataReader i DataGrid

[ Pregleda: 3360 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

radicr

Član broj: 24540
Poruke: 51
*.214.EUnet.yu



+7 Profil

icon SqlDataReader i DataGrid25.07.2004. u 20:39 - pre 240 meseci
Pozdrav

Malo pocinjem da radim C# i ucim ADO.NET
Hocu da napravim neki DataGrid (windows.Forms) koji bi mogao da radi "pametno ucitavanje" u smislu, da kad imam npr. 12 prikazanih vrsta, da iz baze ucitam samo 12 i onda kad korisnik skroluje da ucitavam naredni 1 ili vise rekorda u zavisnosti od navigacije.
Iz razloga toga sto mi xxxDataAdapter.Fill(dataSet) radi previse sporo, posto on fetchuje sve podatke iz tabele, mislio sam da cu moci iskoristiti xxxDataReader za tako nesto ovako:
while (DataReader.Read() && (rowsAdded < visibleRows))
{
AddRow();
rowsAdded++;
}
i onda kad skrolne uradim jos jedan DataReader.Read()
Ali koliko sam procitao xxxDataReader mora da uradi Close() jer je inace xxxConnection u stanju Fetching, i ne mogu da radim BeginTransaction() i update u bazu posto stanje mora biti ConnectionState.Open , odnosno to mi se desava kad radim sa OleDbDataReader i OleDbDataConnection.
A kad uradim DataReader.Close() onda ne mogu raditi postepeni fetching vec moram ucitati sve odjednom sto daje bar neko ubrzanje u odnosu na DataAdapter.Fill(dataSet) ali ipak ne zadovoljava. Je li ima neko rjesenje za ovo?

Hvala,
Radovan
 
Odgovor na temu

bunker
Srđan Savković
Smederevo

Član broj: 4495
Poruke: 239
*.net.yu



Profil

icon Re: SqlDataReader i DataGrid26.07.2004. u 02:39 - pre 240 meseci
tako nesto sam realizovao u javi, na MySql, ali mySql ima
select * from table limit x,y
i vracca samo redove izmedju x i y.

koji db server koristis?
MSSQL ima select top x, kol'ko znam, ali ne znam za od do....
Nije važno stići prvi. Važno je prvo da stigneš.
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: SqlDataReader i DataGrid26.07.2004. u 07:57 - pre 240 meseci
Citat:
radicr: Hocu da napravim neki DataGrid (windows.Forms) koji bi mogao da radi "pametno ucitavanje" u smislu, da kad imam npr. 12 prikazanih vrsta, da iz baze ucitam samo 12 i onda kad korisnik skroluje da ucitavam naredni 1 ili vise rekorda u zavisnosti od navigacije.


Bez obzira što ti ne radiš odmah DataReader.Read(), tebi je ceo query već izvršen, tako da nemaš praktično nikakve uštede. Kad kažeš skrolovanje, nadam se da ne misliš na skrolovanje za po 1, pošto bi to bila smrt da tražiš jedan po jedan slog iz baze.

Ako misliš na pejdžing, to već može. Nažalost, za razliku od MySQL-a, u MS SQL Serveru ne postoji legalan način da se kverijem povuku samo slogovi od n do n+pageSize.

Ali što bi rekli, može da se nabudži, tako što se uradi "TOP na TOP", tj, prvo se uzme prvih n+pageSize, pa se onda na to uradi TOP n, ali u obrnutom redosledu. Naravno, sve ovo u okviru neke stored procedure jer inače nema efekta. Pogledaj po netu, ima dosta članaka na tu temu ("MS SQL paging" ili sl.).
 
Odgovor na temu

radicr

Član broj: 24540
Poruke: 51
*.40.EUnet.yu



+7 Profil

icon Re: SqlDataReader i DataGrid26.07.2004. u 12:26 - pre 240 meseci
Nebitno za bazu, pokusavam da uradim nevezano za bazu. Znaci kad dodijelim datasource gridu, znacu nekako da li je ucitan preko DataReder ili DataAdapter i onda hocu ako je preko DataReadera da ucitavam rekorde po potrebi.
Nije problem samo u izvrsavanju upita, vec je problem u prebacivanju rezultata upita u DataSet/DataTable. Npr. delphi DBGrid ima tu opciju, odnosno njegov TDataSet ucitava rekorde po potrebi, bar ja mislim da je tako.
 
Odgovor na temu

[es] :: .NET :: SqlDataReader i DataGrid

[ Pregleda: 3360 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.