🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.java
Article #153983

Re: Dodawanie WHERE do dowolnego zapytania SQL

#153983
From: Arivald
Date: Sun, 09 Feb 2014 22:14
50 lines
2969 bytes
On 2014-02-09 22:50, J-23 wrote:
> Witam,
>
> Piszę co prawda w Javie ale pytam także na grupie o Delphi może ktoś
> będzie znał jakoś bibliotekę która pozwoli mi do istniejącego SQL
> (SELECT) dopisać warunek (WHERE)
>
> Ktoś powie dlaczego biblioteka można to zrobić za pomocą operacji na
> łacuchach string i będzie miał rację tylko ja potrzebuje dopisywać
> warunek do dowolnego zapytania.i mógłbym oczywiście odpowiednio wycinać
> i kopiować string ale zależy mi na sprawdzonym i działającym rozwiązaniu
>
> ma to działać tak jeżeli mam zapytanie już z jakimś warunkiem to ma mi
> ten warunek kopiować i dodać automatycznie to co zamierzam dodawć
>
>
> Czyli ma byc SELECT...WHERE id-1 i w takim wypadku ma mi dodać AND moj
> stały warunek.
> Druga możliwość to brak warunku w ogólnym zapytaniu i wtedy WHERE moj
> stały warunek,
>
> problemu by nie było nawet było by możliwe wycinanie i kopiowanie
> Stringa (jak wcześniej wspomniałem) ale zastanawiam się jak to ugryść
> jeżeli będą np;
>
> 1. Podzapytania
> 2. ktoś w zapytaniu początkowym doda mi np elementy GROUP BY, ORDER itp
>
> wtedy na końcu linijki nie dokleję przecież WHERE owszem idzie to
> wszystko wyłapać ale może jest już jakieś gotowe rozwiązanie
>
> Nie bardzo mam pomysł nawet co wpisć w google by poszkukać czegoś. Może
> wy na swej drodze spotkaliście coś takiego.
>
> Oczywiście chodzi o Jave :)
>

Jedyne rozwiązanie o jakim mogę pomyśleć, to pełny parser SQL. Parsujesz 
oryginalny SQL do drzewa obiektów, dodajesz swoje warunki i ponownie 
generujesz SQL.

Rozwiązanie oparte na stringach już widziałem, i niestety musiałem z nim 
pracować... Kod okropny, a w miarę pojawiania się kolejnych przypadków 
do obsłużenie coraz okropniejszy.

A parserów w Javie jest trochę, trzeba by sprawdzić który odpowiada 
Twoim wymaganiom.

-- 
Arivald
Technical Details
Message-ID: <ld8uks$fp2$1@news.dialog.net.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.nask.pl!news.nask.org.pl!news.man.lodz.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail
References: <ld8t8a$vlk$1@node2.news.atman.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.nask.pl!news.nask.org.pl!news.man.lodz.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail
From: Arivald <NOSPAMarivald@interia.pl>
Newsgroups: pl.comp.lang.delphi.bazy-danych,pl.comp.lang.java
Subject: Re: Dodawanie WHERE do dowolnego zapytania SQL
Date: Sun, 09 Feb 2014 23:14:52 +0100
Organization: Dialog Net
Lines: 51
Message-ID: <ld8uks$fp2$1@news.dialog.net.pl>
References: <ld8t8a$vlk$1@node2.news.atman.pl>
NNTP-Posting-Host: dynamic-78-9-157-186.ssp.dialog.net.pl
Mime-Version: 1.0
X-Trace: news.dialog.net.pl 1391984093 16162 78.9.157.186 (9 Feb 2014 22:14:53 GMT)
X-Complaints-To: abuse@dialog.net.pl
NNTP-Posting-Date: Sun, 9 Feb 2014 22:14:53 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Thunderbird/27.0
In-Reply-To: <ld8t8a$vlk$1@node2.news.atman.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit