Sziasztok!
Írok egy progit, ami adatokon eddig kézzel végzett műveleteket automatizálja! A bemenő adatokat egy olyan internet oldalról szedjük, ahol van 3 szövegmező (ezek az SQL lekérdezés paraméterei) és egy start gomb. Generál egy szövegfáljt, amiben benne vannak az adatok.
A cég aki csinálta az adatbázist nem enged közvetlen SQL futtatást, mert ő szerintük, akkor nem tudják garantálni az adatbázis sértetlenségét.
Az a kérdésem, hogy hogyan tudnám a Java programomból meghívni, hogy végrehajtsa a start gomb lenyomására végbemenő műveletet?
Az oldal kódrészlete: (az oldal az intranetünkön van fent)
<H1>Start a new list:</H1> <form action="/cgi-bin/sqlgo/sqlstart.cgi" method="get"> <input type=hidden name=sql value=PrNr > <TABLE> <TR><TD>Status</TD><TD><input type="text" name=status_ value=A000></TD></TR> <TR><TD>Start_date</TD><TD><input type="text" name=sdatum value=01.08.2006></TD></TR> <TR><TD>End_date</TD><TD><input type="text" name=edatum value=31.08.2006></TD></TR> </TABLE> <input type=submit value='Start!'> </form> <H1>Specify output file:</H1> <form action="/cgi-bin/sqlgo/register.cgi" method="get"> Computer (workstation) name:<input type="text" name=suti value=gp19_teljes><input type=submit value='Set'> </form>
Üdv:
Rityi
11 Comments
Kasza Miklós
Ruzsa Richárd
Kasza Miklós
Ha utana tudsz jarni, hogy milyen adatbazis-szervert futtatnak, es el tudod kerni a parametereit, akkor JDBC-n keresztul tudod babralni. Ellenkezo esetben nem sok eselyet latom (hacsak nem ugy, hogy az o feluletuknek adod a parametereket kivulrol - ez viszont szertinem ganyolas es nem biztos, hogy orulnenek neki)
tvik
Most a melóhelyen nincs nálam példakód, de a javadoc-ban van valami minimális információ róla -igaz, angolul:
http://java.sun.com/j2se/1.5.0/docs/api/java/net/URLConnection.html
Ha csak HTTP GET-et kell küldeni, akkor elég ez is:
http://java.sun.com/j2se/1.5.0/docs/api/java/net/URL.html
tvik
Kasza Miklós
(persze ha nincs mas megoldas, akkor tokeletes)
tvik
Kasza Miklós
tvik
Sima SQL utasításokat szerintem nem lehet rendesen korlátozni, de lehet hogy tévedek. Hogyan mondod meg, hogy bizonyos érvényes műveleteket egy tranzakción belül hatson végre? Pl. egy banki, átutalásnál, egyik számláról le kell venni az összeget, a másikra meg rátenni. Ez két update.
Ruzsa Richárd
Adatbázisokról annyit, hogy van 1-2 amit én tartok karban és ott userekre be tudom állítani, hogy milyen lekérdezést futtathatnak, pl. valaki csak megnézni tudja az adatokat (SELECT), valaki meg modósítani is (UPDATE, SET), és csak én tudok táblát kezelő lekérdezést írni (ALTER TABLE stb.).
Szerintem ez a legkorrektebb megoldás, ha valaki rajtam kívül is akar SQL utasítást futtatni.
Kasza Miklós
En is valami ilyesmire gondoltam (marmint jogosultsagbeallitas). Viszont tviknek igaza van abban, hogy igy nem tudod felugyelni, hogy akinek irasi joga is van, az logikailag konzisztens allapotban hagyja-e az adatbazist, mert vannak olyan feltetelek, amit a beepitett constraint-ekkel (foreign key, stb.) nem lehet kikenyszeriteni. Ilyenkor: tarolt eljarasok (persze ennek is megvannak a hatranyai).