Article View: pl.comp.lang.java
Article #153983Re: Dodawanie WHERE do dowolnego zapytania SQL
From: Arivald
Date: Sun, 09 Feb 2014 22:14
Date: Sun, 09 Feb 2014 22:14
50 lines
2969 bytes
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-mailReferences:
<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