🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: SqlCommandBuilder

#646
From: Marek Janaszewski USUNTO. z adre...
Date: Sat, 27 Mar 2004 20:54
49 lines
3532 bytes
Hilarion wrote:
>> Pytanie o te parametry zadalem dlatego, ze w
>> Delphi wpisuje nazwe parametru do polecenia i autogmatycznie wstawia
>> wartosc parametru do zapytania.
>
> Nie żebym się czepiał - po prostu uważam, że lepiej wiedzieć, niż
> nie wiedzieć, więc napiszę co wiem, a może inni wtedy też wiedzieć
> będą... A może za bardzo zamotałem :) W każdym razie wykorzystanie
> parametrów w Delphi NIE oznacza, że automatycznie w odpowiednie
> miejsca zapytania zostaną wklejone wartości. Użycie parametrów
> w zapytaniach powoduje odwołanie się do mechanizmów parametryzacji
> zapytań właściwych dla danej bazy SQL. W większości wypadków
> praca z zapytaniami sparametryzowanymi (baza tylko raz
> analizuje strukturę zapytania, a tylko wykonując zapytanie
> posługuje się różnymi wartościami parametrów) jest wydajniejsza od
> pracy z dynamicznie budowanymi zapytaniami SQL (za każdym razem
> wykonywana jest analiza zapytania i chociaż nie jest wykonywane
> podstawianie wartości do parametrów, to i tak zajmuje to zazwyczaj
> więcej czasu), zwłaszcza jeśli wykonywane są serie zapytań różniących
> się tylko poszczególnymi wartościami (a nie strukturą zapytania).
[...]

Witam!

Aby osiągnąć wzrost wydajności to trzeba było chyba zastosować Prepare i
Unprepare. Nie wiem czy treść zapytania przy Open/Close nie jest
analizowana. To, że parametry a dynamiczne zapytanie coś innego to się
zgadza. W niektórych przypadkach dynamiczne zapytanie daje większą
elastyczność, czasem mniejszą (np. BLOB).

Jeśli chodzi o parametry z nazwą czyli w stylu ":coś_tam" to o dziwo
zapytanie jest pod tym względem w Delphi analizowane od strony aplikacji. W
miejsce ":coś_tam" są wstawiane znaki zapytania. I chyba te znaki zapytania
są analizowane od strony serwera a parametry podawane przez kolejność.
Jeszcze nie wiem jak to wygląda w .NET-cie dokładnie.

Natomiast parametry mają jedną przewagę w .NET. Umożliwiają w prosty sposób
stworzenie "update logic", czyli wszystkich zapytań definiujący w jakiś
sposób modyfikować bazę dany. Zmiany są przechowywane w tabeli DataSet-u,
dopiero na rozkaz baza danych jest bombardowana zapytaniami. Wartości z
DataSet są podstawiane pod parametry.
Są tylko pewne problemy z wartością NULL i jaki model aktualizacji
wybierzemy. Zalecany jest optymistyczny ale trzeba wybrać reakcje na to, że
dane ulegną zmianie w między czasie.

-- 
Pozdrawiam,
Marek Janaszewski
[ j_m...@gazeta.pl ]
Technical Details
Message-ID: <c455cp$2kh2$5@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: <c3vmrc$3a9$1@news.onet.pl> <c40179$81i$1@achot.icm.edu.pl> <c40t58$sbd$1@news.onet.pl> <c42dtv$hpv$1@news.onet.pl>

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: SqlCommandBuilder
Date: Sat, 27 Mar 2004 21:54:00 +0100
Organization: ATMAN
Lines: 50
Message-ID: <c455cp$2kh2$5@news.atman.pl>
References: <c3vmrc$3a9$1@news.onet.pl> <c40179$81i$1@achot.icm.edu.pl> <c40t58$sbd$1@news.onet.pl> <c42dtv$hpv$1@news.onet.pl>
NNTP-Posting-Host: staticline702.toya.net.pl
Mime-Version: 1.0
X-Trace: news.atman.pl 1080432858 86562 217.113.228.127 (28 Mar 2004 00:14:18 GMT)
X-Complaints-To: use...@atman.pl
NNTP-Posting-Date: Sun, 28 Mar 2004 00:14:18 +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