Child pages
  • Java alkalmazás - Internet oldal action
Skip to end of metadata
Go to start of metadata

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

      
      
Page viewed times
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
  • No labels

11 Comments

  1. Ha jol ertem, az a gond, hogy az sql utasitasok ugyan meglennenek, de nem fersz hozza az adatbazishoz, hogy futtasd oket?
  2. Ha a ceg nem enged kozvetlen sql futtatast, akkor hogyan lehet az adatbazison barmilyen modositast vegezni? Milyen felulet van erre?
    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)
  3. Jávából a java.net osztály elemeivel tudsz HTTP kéréseket küldeni és a válaszokat fogadni.
    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
  4. Tehát gondolom az adatbázishoz közvetlenül nem fértek hozzá, viszont egy webes felületen hozzáfértek, de nem böngészőből szeretnétek elérni, hanem programból. Ehhez ad segítséget amit írtam.
  5. Pont erre irtam, hogy szerintem ez ganyolas, es nem biztos, hogy orulnenek neki :)
    (persze ha nincs mas megoldas, akkor tokeletes)
  6. Közvetlen adatbázis kapcsolatot én sem adnék ki szívesen, nehogy olyan SQL utasítások forduljanak elő amiket nem szeretnék és amiket nem tudok jogosultságokkal korlátozni. Éppen ezért szoktak elérakni még valamilyen réteget ami csak bizonyos jól definiált műveleteket enged végrehajtani. Ez most történeti okok miatt egy HTTP protokollra épülő interface. Szerintem ez nem akkora nagy gányolás.
  7. Nem akarok (nagyon :)) kotozkodni, de ugy gondolom, azert eleg sok mindennek lehet korlatozni a hozzafereset az adatbazis-szerverben. Ha maskent nem, akkor meg lehet hasznalni tarolt eljarasokat, es akkor legalabb tudsz kivulrol jdbc-t hasznalni, es nem posttal (vagy ne adj’ isten gettel) kell kuldozgetni a ki tudja milyen tartalmu adatokat.
  8. Ha tárolt eljárásokat lehet használni akkor tényleg meg lehet oldani mindent.

    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.
  9. Látom értitek a problémát. Azt nem akarom eldönteni, hogy melyik verzió a jobb. Jelenleg a "gányolós" módszerrel oldottam meg a problémát, se időm se kedvem más megoldást keresni. Ez is tökéletesen működik, és ez a lényeg.

    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.
  10. Igazad van, tenyleg az a lenyeg, hogy mukodjon :)
    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).