C# on-line adatbáziskezelés - Megoldva

Fórumok

Üdvözlet mindenkinek !

Adott a következő probléma :

Adott mondjuk egy relatíve nagy, 100.000 rekordot tartalmazó tábla.
Kinek milyen ötlete van arra,- most a sajátomat szándékosan nem említeném,- hogy a táblából mindig csak a szükséges mennyiségű rekordot olvassa be, és ne az egész táblát, amit majd off-line tallózgatok.....

Ötleteket előre is köszönöm.

Megoldás :
DevXPress - XPO.

Hozzászólások

"most a sajátomat szándékosan nem említeném"
még szerencse, ezek után...

Hát, pl. hogy a táblából mindig csak a szükséges mennyiségű rekordot olvasd be. :)
Ez nem C# probléma, az SQL TOP és környéke lesz a barátod (attól függ, milyen SQL kiszolgálót használsz).
--
geri / otperc.net

Ha arra gondolsz, hogy nem az egész táblán akarsz dolgozni egy adott
időpontban, akkor kellene egy másik, ugyanolyan tábla, amibe átmozgatod
a szükséges adatokat, majd vissza.
Persze a kérdés, mire akarod használni: ha módosítani is akarod
akkor kell a másik tábla, ha nem akkor tehetsz rá view-t is(ez pl. írható is néhány db kezelőben).

SqlCommanddal a szerveren hajtod végre a lekérdezéseket, nem pedig DataSetet használsz, majd a command eredményét jeleníted meg.

Köszi válaszod, bocs ha egy picit tömör leszek.

DataSet = off-line kezelés. Előre betöltöm az adatokat.

OracleCommand = SqlCommand Oracle megfelelője , O.K. de nekem kell lekezelnem mindent. Én töltögetem be az adatokat, nem tudok databindingot csinálni, datagridview oszlopra rendezést nekem kell megoldani stb. sajnos nehézkes és fapados.
Retro érzésem van, Clipperes idők jutnak eszembe, amikor mindent le kellett programozni az utolsó "szögig", és nem volt semmi segítség ami átvette volna a munka "kuli" részét.........

Nem mozgok otthonosan C#-ban es nem is biztos, hogy helyesen ertelmeztem a kerdest de itt egy otlet:
Tolts be X kepernyonyi sort elore es a scroll event-re tegy egy preloader-t ami boviti a listat, igy nem kell nagy mennyisegu adatot mozgatni es tarolni egy idoben. A memoriahasznalat erdekeben meg ne feledkezz meg arrol, hogy a uj adatok betoltese utan uritsd az X kerepnyonel regebbi sorokat.

Feltételezve, hogy se TOP, se LIMIT záradékot nem használhatsz, én lekérdezném az egész táblát, de csak a PK mezőre (vagy a legrövidebb UNIQUE-ra), azt tárolnám, majd lapozásnál IN segítségével leválogatnám az éppen szükséges rekordokat.

Sajnos nem, ennél bonyolultabb.

Először egy picit off:
A probléma, mint mondtam, nem az sql "oldalon" van, hanem c# .net résszel.
Ugye c# - nevezzük innen Ő-nek, offline dolgozik DataSettel, DataTablele, stb-vel.
Offline szuper programozni, kényelmes, csak pl.: tallózom a betöltött DataSetet, majd egy kliens felvisz egy rekordot.
Én egész addig nem látom, amíg újra nem töltöm a táblát. (Lehet, hogy van megoldás, csak én nem tudom... végül is ezért nyitottam a topikot....)
Szóval egyész egyszerűen nem tudom tallózni a táblát. Igazából nem értem az MS elképzelését, miért kellett ez így megcsinálni, és nem meghagyni az "on-line" kezelést.

Mivel nekem kell 'lekezelnem' mindent,- mint ahogy mondtam nincs oszlop sorba rendezés,- tudom meg kell írnom a szükséges metódust,- nincs databinding, és egy csomó kényelmes eszköz, ami nekem, mint programozó válláról levenné a kuli munkát, és tényleg csak a lényegre kellene koncentrálni.

Egyébként a témanyitáskor, még mielőtt bármit is szóltam volna, és leszóltak,- arra gondoltam, hogy vannak olyan 3rd szoftverek, amivel ez a probléma áthidalható - de ezekben nincs semmilyen tapasztalatom, pl: DataObjects for .NET.
Ebben egész egyszerűen,-ha leírásoknak hinni lehet van egy DataAccess property= Virtual property, és innentől kezdve nekem nem kell foglalkoznom azzal, hogyan olvasom az adatokat a nagy táblából, csak megkapom az adatokat, és minden kénylemes eszközöm rendelkezésre áll, úgy mint off-line esetben. (Bocs, hogy ennyire egyszerűsítettem).

Visszatérve kérdésedre:
DataGridView.CellValueNeeded metódusát felhasználva én magam töltöm az adatokat. Maga a program két szegmenssel dolgozik, ha a egyikben sincs meg a kért adat, akkor törlés, szegmens tölt, és minden mehet tovább.
Ha érdekel, elküldhetem a kódot. Igaz, nem saját szerzemény, google segített, én csak egy iciripicit tettem hozzá, de sajnos még kell fejleszteni rajta.