[ techcode @ 29.05.2005. 23:49 ] @
E pa ukratko :

Imam ispit iz Jave u Utorak 31.05.2005 u 14h.
Navikao sam maximalno na Perl i njegov nacin rada.

U Perl-u sam napisao klasu/modul koji sluza za neku vrstu apstrakcije pristupa bazi podataka. On sam generise odgovarajuci SQL (proveri koja polja se pojavljuju i u formularu i u tabeli). Dakle otprilike kod kojim ja sve to koristim ide ovako :
Code:

sub upisi_podatke {
my $self=shift;
my $f = $self->request()->Vars();
# Ovime u $f dobijem referencu na hash (asocijativni niz) u kojem su kljucevi
# imena polja iz formulara, a vrednosti - vrednosti istih tih polja

# Pravim objekat klase koju sam pisao, saljem connection string
my $db=DataBase->new("...etc");
$db->insert(table => 'ime_tabele',
                 prim_key => 'ime_polja_pk',
                 data => $f);
}


E i to je otprilike to (izbacena je provera ispravnosti podataka, koja se svodi na pozivanje metoda drugog modula sa www.cpan.org). Kada sam pisao kod te klase nisam znao da MySQL moze da mi kaze i koje je polje primary key, tako da se moze raditi i bez ovog prim_key => '...'.

Kako ja da uradim nesto slicno u JSP-u?

Dakle nemam puno vremena, nema nista od ucenja nekih framework-a i MCV-ova ...etc.

Mislim da bi mi i sama mogucnost da ne moram polje po polje da dodajem rucno pomogla. Trenutno radim onako kako su nam pokazali na predavanjima/vezbama.

Dakle :

Code:

String ime=zahtev.getParameter("ime");
// I tako za svako polje. Dakle jedno 5 - 10 x
// polje2
// polje3
// polje4
// polje5
// polje6
// polje7
// polje8
// polje9
// polje10

Connection con = DriverManager.getConnection("jdbc:....");

PreparedStatement updateSales = con.prepareStatement("UPDATE SALES SET ime = ?, prezime = ?, ......");

updateSales.setString(1,ime);
// Pa onda ovako opet za svako polje ... pri tome jos da pazim i sta je Int, sta String ...etc.
// polje2
// polje3
// polje4
// polje5
// polje6
// polje7
// polje8
// polje9
// polje10

updateSales.executeUpdate();


Kod Perl-a barem moze samo prepare SQL izraz sa placeholderima (?) i onda u execute da mu posaljem samo po istom redosledu vrednosti za ta polja. Doduse Perl V5 je typeless tj. nema razlike izmedju broja i stringa ...

Jer moze ovo nekako da se skrati u JSP-u?!?

PS Da ne pominjem da je potrebno samo promeniti definiciju tabele, i malo html koda u templejtu u slucaju da je potrebno dodati/obrisati neka polja - a kod ostaje isti ...
[ drazha @ 13.06.2005. 00:51 ] @
Nemam bas nekog iskustva, ali verujem da bi morao neki JavaBean da namestis preko kojeg bi terao konekciju prema nekoj bazi podataka, i preko koje bi onda pristupao metodama iste.
[ drazha @ 13.06.2005. 19:50 ] @
Bice da ipak ima leka tvom problemu:

Code:

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql_rt" %>

<sql:setDataSource var="datasource"
                 driver="com.mysql.jdbc.Driver"
                    url="jdbc:mysql://localhost/publish"
                   user="publishuser" password="secret"/>

<sql:query var="books" dataSource="${datasource}">
  SELECT id, title, price FROM book
</sql:query>
<html>
  <head>
    <title>A First JSP Database</title
  </head>
  <body>
    <table border="1">
      <tr>
         <td>id</td><td>title</td><td>price</td>
      </tr>
<c:forEach items="${books.rows}" var="row">
      <tr>
        <td><c:out value="${row.id}" /></td>
        <td><c:out value="${row.title}" /></td>
        <td><c:out value="${row.price}" /></td>
      </tr>
</c:forEach>
   </table>
  </body>
</html>


Naravno, moras da sredis da imas mysql connector za jdbc u libu i ove jstl-ove isto.

Poz//Dragutin