parser sql

0

witam,
poszukuje parsera SQL innego niz http://www.experlog.com/gibello/zql/ ktory potrafi zamienic zapytanie w obiekty Javy lub kod XML oraz przetworzyc go na zapytanie, głównie chodzi mi o wyciągniecie z kwerendy danych na temat odpytywanych tabel oraz relacji między nimi. Oczywiście proste jest to do zrobienia dla banalnych zapytań natomist sprawa sie komplikuje kiedy zapytanie nie jest juz trywialne i ma postać takiego jak przedstawione poniżej:

select
klient.NrKlienta as Numer_klienta,
klient.NazwaKlienta as Nazwa_klienta,
klient.NIP as NIP,
klient.Email as Email,
klient.Telefon as Telefon,
adres.Ulica as Ulica,
adres.KodPocztowy as Kod_pocztowy,
miejsce.NazwaMiejscowosci as Miasto
from WSPOL_Klient klient
inner join WSPOL_Adres adres on klient.IdKlienta=adres.IdKlienta
inner join WSPOL_Miejscowosc miejsce on adres.IdMiejscowosci=miejsce.IdMiejscowosci
where adres.RodzajAdresu='k';

Z góry dziękuje za jakiekolwiek pomysły rozwiązania tego problemu.

0

Najlepszy do zamieniania zapytań SQL na obiekty Javy jest HIbernate, to jest wielki kombajn do obsługi warstwy bazodanowej. A co do tego:
"głównie chodzi mi o wyciągniecie z kwerendy danych na temat odpytywanych tabel oraz relacji między nimi."

Mając jakieś zapytanie, z góry wiesz z jakich tabel korzystasz, chyba mam racje, więc możesz odpytać poprzez jakąś metodę z bibloteki JDBC informacje o niej itd.

0

dzięki losio za odpowiedz ale niedokońca mi o to chodziło. Ten parser tak naprawde w ogóle nie bedzie korzystał z jdbc poniewaz kwerendy nie ja bede budował tylko ja dostane plik z kwerendami , z tego pliku bede zaczytywał kwerendy i dzieki temu parserowi z zaczytanej z pliku kwerendy ma wyciągnąć dane o odpytywanych tabelach oraz o relacjach miedzy odpytywanymi tabelami. Dlatego to nie jest takie proste jak sie wydaj biorąc pod uwage przytoczony przeze mnie przykład kwerendy.

0

czyli rozumiem, że w ogóle nie będziesz o nic odpytywał bazy danych tak? I np. chcesz wywnioskować po użyciu klauzuli inner join, że coś jest ze sobą w jakiejś relacji? Jeżeli tak to możesz użyć wyrażeń regularnych w Javie, tylko z tego co mi się wydaje określanie relacji na podstawie samego query stringa nie będzie w 100% możliwe, no ale możesz powalczyć. Pozdr

0

dzięki za odpowiedz losio. Tak ja w ogóle nie bede odpytywał bazy danych. Tak wyrażania regularne sa jakims rozwiazaniem ale liczyłem jednak ze da sie to zrobić inaczej badz juz ktos stworzył podobny parser z którego mógłbym skorzystać. No ale cóz - musze jednak sam powalczyc z problemem.Pozdr

0

Szczerze powiem, że masz dziwny problem do rozwiązania i dosyć trudny a nawet w pewnych miejscach niewykonalny, bo piszesz, że chcesz informacje o tabeli, rozumiem, że takimi informacjami może być lista pól wraz z ich typami itd. W przypadku zapytania 'select * from jakastabela' można sobie jedynie powróżyć. Osobiście polecam, zmianę koncepcji :-D. Pozdr i powodzenia

0

niestety losio zmiana koncepcji nie wchodzi w gre. Ja musze to napisać i tyle. Musi sie to dac zrobić jakoś - jak tego jeszcze nie wiem ale pracuje nad tym :). Tojest tylko wyciągniecie nazw tabel z jakiegos Stringa noi odnalezienie relacji miedzy tabelami na opdstawie tego samego Stringa czyli osoba.id= adresy.id_osoby. Wiec no jakos musze sobie dać rade. Dzieki za wsparcie :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1