🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.pl.comp.lang.csharp
Article #714

Re: Pytanie o prace z ADO.Net

#714
From: Marek Janaszewski USUNTO. z adre...
Date: Sat, 03 Apr 2004 20:53
49 lines
3664 bytes
Maciej Łuszczyński wrote:
>> Jeśli dobrze zrozumiałem, to zamiast przygotować zapytanie w
>> aplikacji, tworzysz je dynamicznie w czasie pracy programu. Otóż
>> wyczytałem, że taki sposób jest o tyle nie ekonomiczny że aplikacji
>> traci czas na przepytywanie serwera o strukturę tabeli. Było właśnie
>> było to jeden z powodów wyboru rozwiązania z osobny DataAdapterem.
>> Więc chyba jeśli nie ma innej potrzeby warto przygotowywać zapytania
>> w czasie projektowania aplikacji.
> A nie jest tak, ze kazde zapytanie przychodzace do SQL Servera jest
> parsowane, a nastepnie tworzony jest plan wykonania zapytania, pod
> warunkiem, ze nie jest to odwolanie do funkcji lub procedury? Czyzby
> DataAdapter potrafil to obejsc? Chetnie dowiem sie czegos wiecej ww
> temacie.
[...]

Witam!

Nie, chodziło mi to co się dzieje po stronie klienta. Np. zapytanie
modyfikacji tabeli może być bezpośrednio wprowadzone w czasie tworzenia
aplikacji do obiektu Command w DataAdapterze albo generowane dynamicznie
przez SQLCommandBuilder. Ta druga metodę ma tą niedogodność, że musi odpytać
bazę danych o strukturę tabeli aby móc takie zapytanie wygenerować.

Jeśli chodzi o stronę serwera podobno można obejść proces prasowania
zapytania.
Po pierwsze serwery mogą posiadać własne API. Może to być metoda
wydajniejsza ale na pewno nie łatwiejsza w używaniu.
Po drugie procedury składowane. Podejrzewam, że ich użycie nie wiąże się z
prasowaniem ich treść za każdym razem. Procedury składowane są preferowane
do załatwiania updateing logic. Ale niestety zarówno AFAIK genertor zapytań
zawarta w IDE jaki i SQLCommandBuilder nie pomogą w ich używaniu.
Jest jeszcze wymierająca metoda Embeded SQL. Czyli SQL wpisany pomiędzy
zwykły kod. Takie coś jest także kompilowane i zamieniane na wywołania
funkcji serwera. Komunikacja z zapytaniami następuje przez specjalne
współdzielone zmienne.
Korzystając SQLCommandBuilder nie dosyć, że powoduje interpretacje kodu to
także generacje tego zapytania. Generowanie zapytania może mięć jedną
przewagę w przypadku updateing logic. Można spróbować nie modyfikować
wszystkich pól. W przypadku optymistycznego module, może to oznacza, że nie
napiszemy zmian dokonanych przez innych. Tak automagicznie działało ADO bez
.NET . Ale na ADO.NET ta metoda jest strasznie kłopotliwa więc zwykle wysyła
się wszystkie pola do modyfikacji. Za to rozwiązuje się te problemy szukają
rekordu, który ma być zmodyfikowany uwzględniając wszystkie pola albo wersje
rekordu.

-- 
Pozdrawiam,
Marek Janaszewski
[ j_m...@gazeta.pl ]
Technical Details
Message-ID: <c4n8kf$bg0$2@news.atman.pl>
Path: mbox-mo1.pugleaf.net!archiver1.google.com!news1.google.com!news.glorb.com!nntp.idg.pl!news.atman.pl!not-for-mail
References: <c49ept$fbg$1@news.onet.pl> <c4h5rd$753$1@nemesis.news.tpi.pl> <c4jvdi$u99$1@news.atman.pl> <c3yeak2tpn37.atid4u2mtmu8$.dlg@40tude.net>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!archiver1.google.com!news1.google.com!news.glorb.com!nntp.idg.pl!news.atman.pl!not-for-mail
From: "Marek Janaszewski \(USUN_TO. z adresu!\)" <USUN_TO...@gazeta.pl>
Newsgroups: alt.pl.comp.lang.csharp
Subject: Re: Pytanie o prace z ADO.Net
Date: Sat, 3 Apr 2004 22:53:23 +0200
Organization: ATMAN
Lines: 50
Message-ID: <c4n8kf$bg0$2@news.atman.pl>
References: <c49ept$fbg$1@news.onet.pl> <c4h5rd$753$1@nemesis.news.tpi.pl> <c4jvdi$u99$1@news.atman.pl> <c3yeak2tpn37.atid4u2mtmu8$.dlg@40tude.net>
NNTP-Posting-Host: staticline702.toya.net.pl
Mime-Version: 1.0
X-Trace: news.atman.pl 1081025999 11776 217.113.228.127 (3 Apr 2004 20:59:59 GMT)
X-Complaints-To: use...@atman.pl
NNTP-Posting-Date: Sat, 3 Apr 2004 20:59:59 +0000 (UTC)
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit