Professional Documents
Culture Documents
ZADATAK:
M
Kreirati klasu Osoba opisanu sa atributima:
Kreirati klasu OsobaDAO koja u konstruktoru podeava konekciju sa MySQL bazom podataka i kao
funkcionalnosti pri radu implementira sledee metode:
public
public
public
public
// vazni importi
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import java.util.ArrayList;
public class DAO {
private DataSource ds;
// DEFINICIJA KONEKCIONIH STRINGOVA
private static String SELECTOSOBA = "SELECT * FROM osoba WHERE ime = ?";
// DEFINICIJA KONSTRUKTORA ZA PODESAVNJE KONEKCIJE UVEK ISTO
public OsobaDAO(){
try {
InitialContext cxt = new InitialContext();
if ( cxt == null ) {
}
ds = (DataSource) cxt.lookup( "java:/comp/env/jdbc/mysql" );
if ( ds == null ) {
}
} catch (NamingException e) {
}
}
// DEFINICIJA METODE
public ArrayList<Osoba> selectOsobe(String ime){
Connection con = null;
PreparedStatement pstm = null;
ResultSet rs = null;
// POMOCNE PROMENLJIVE ZA KONKRETNU METODU
ArrayList<Osoba> lo = new ArrayList<Osoba>();
Osoba osoba = null;
try {
con = ds.getConnection();
pstm = con.prepareStatement(SELECTOSOBA);
// DOPUNJAVANJE SQL STRINGA, SVAKI ? SE MORA PODESITI
pstm.setString(1, ime);
pstm.execute();
//****POCETAKAKO UPIT VRACA REZULTAT TREBA SLEDECI DEO
rs = pstm.getResultSet();
while(rs.next()){ // if AKO UPIT VRACA JEDAN REZULTAT
osoba = new Osoba();
osoba.setIdosoba(rs.getInt("idosoba"));
osoba.setIme(rs.getString("ime"));
osoba.setPrezime(rs.getString("prezime"));
osoba.setJMBG(rs.getString("JMBG"));
osoba.setVremeUpisa(rs.getTimestamp("vremeUpisa"));
//****KRAJ
lo.add(osoba);
}
KRAJ OBRADE ResultSet-a
} catch (SQLException e) {
e.printStackTrace();
}
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
return lo;
}
// DEFINICIJA OSTALIH METODA ...
}
REENJE:
Preko phpMyAdmin-a kreirati bazu koja se zove ip09 sa Tabelom Osoba sa parametrima opisanim u klasi
Osoba. Na slici ispod prikazana struktura kreirane tabele u bazi.
}
public void setIdosoba(int idosoba) {
this.idosoba = idosoba;
}
public String getIme() {
return ime;
}
public void setIme(String ime) {
this.ime = ime;
}
public String getPrezime() {
return prezime;
}
public void setPrezime(String prezime) {
this.prezime = prezime;
}
public String getJMBG() {
return JMBG;
}
public void setJMBG(String jmbg) {
JMBG = jmbg;
}
import
import
import
import
import
import
import
java.sql.Connection;
java.sql.PreparedStatement;
java.sql.ResultSet;
java.sql.SQLException;
javax.naming.InitialContext;
javax.naming.NamingException;
javax.sql.DataSource;
import java.util.ArrayList;
public class OsobaDAO {
// DEFINICIJA KONEKCIONIH STRINGOVA
private static String INSERTOSOBA = "INSERT INTO osoba (ime, prezime, JMBG,
vremeUpisa) VALUES (?, ?, ?, CURRENT_TIMESTAMP)";
private static String DELETEOSOBA = "DELETE from osoba WHERE ime=?";
private static String GETOSOBABYID = "SELECT * FROM osoba WHERE idosoba=? ";
private static String GETLASTNOSOBA = "SELECT * FROM osoba ORDER BY idosoba
DESC LIMIT ? ";
private DataSource ds;
// DEFINICIJA KONSTRUKTORA ZA PODESAVNJE KONEKCIJU
public OsobaDAO(){
try {
InitialContext cxt = new InitialContext();
if ( cxt == null ) {
}
ds = (DataSource) cxt.lookup( "java:/comp/env/jdbc/mysql" );
if ( ds == null ) {
}
} catch (NamingException e) {
}
}
// DEFINICIJA METODE ZA UNOS OSOBE U BAZU
public void insertOsoba(Osoba osoba){
Connection con = null;
PreparedStatement pstm = null;
try {
con = ds.getConnection();
pstm = con.prepareStatement(INSERTOSOBA);
pstm.setString(1, osoba.getIme());
pstm.setString(2, osoba.getPrezime());
pstm.setString(3, osoba.getJMBG());
pstm.execute();
} catch (SQLException e) {
e.printStackTrace();
}
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
// DEFINICIJA METODE ZA BRISANJE SVIH OSOBA IZ BAZE SA PROSLEDJENIM IMENOM
public void deleteOsoba(String ime){
Connection con = null;
PreparedStatement pstm = null;
try {
con = ds.getConnection();
pstm = con.prepareStatement(DELETEOSOBA);
pstm.setString(1, ime);
pstm.execute();
} catch (SQLException e) {
e.printStackTrace();
}
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
// DEFINICIJA METODE OSOBU IZ BAZE PO NJENOM ID-U IZ BAZE
public Osoba getOsobaById(int idosoba){
Osoba osoba = null;
Connection con = null;
PreparedStatement pstm = null;
ResultSet rs = null;
try {
con = ds.getConnection();
pstm = con.prepareStatement(GETOSOBABYID);
pstm.setInt(1, idosoba);
pstm.execute();
rs = pstm.getResultSet();
if(rs.next()){
osoba = new Osoba();
osoba.setIdosoba(rs.getInt("idosoba"));
osoba.setIme(rs.getString("ime"));
osoba.setPrezime(rs.getString("prezime"));
osoba.setJMBG(rs.getString("JMBG"));
osoba.setVremeUpisa(rs.getTimestamp("vremeUpisa"));
}
} catch (SQLException e) {
e.printStackTrace();
}
finally{
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return osoba;
}
// DEFINICIJA METODE KOJA VRACA LISTU ZADNJIH 10 OSOBA IZ BAZE
public ArrayList<Osoba> getLastNOsoba(int limit){
Osoba osoba = null;
Connection con = null;
PreparedStatement pstm = null;
ResultSet rs = null;
ArrayList<Osoba> lo = new ArrayList<Osoba>();
try {
con = ds.getConnection();
pstm = con.prepareStatement(GETLASTNOSOBA);
// DOPUNJAVANJE SQL STRINGA, SVAKI ? SE MORA PODESITI
pstm.setInt(1, limit);
pstm.execute();
rs = pstm.getResultSet();
while(rs.next()){
osoba = new Osoba();
osoba.setIdosoba(rs.getInt("idosoba"));
osoba.setIme(rs.getString("ime"));
osoba.setPrezime(rs.getString("prezime"));
osoba.setJMBG(rs.getString("JMBG"));
osoba.setVremeUpisa(rs.getTimestamp("vremeUpisa"));
lo.add(osoba);
}
} catch (SQLException e) {
e.printStackTrace();
}
finally{
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return lo;
}
}
// testiranje: insertTest.jsp,
<%
// kreiranje konekcije
OsobaDAO od = new OsobaDAO();
Osoba o = new Osoba("Pera", "Peric", "1111111111111");
// poziv metode
od.insertOsoba(o);
// proveriti u bazi da li je dodata osoba
%>
// testiranje: deleteTest.jsp,
<%
// kreiranje konekcije
OsobaDAO od = new OsobaDAO();
// poziv metode
od.deleteOsoba(5);
// proveriti u bazi da li je obrisana osoba sa id 5
%>
// testiranje: selectByIdTest.jsp,
<%
Osoba o = null;
OsobaDAO od = new OsobaDAO();
o = od.getOsobaById(1111);
if (o!= null){
%>
<table border="1">
<tr>
<th>ID</th>
<th>IME</th>
<th>PREZIME</th>
<th>JMBG</th>
<th>VREME</th>
</tr>
<%for (Osoba pom : lo){%>
<tr>
<td><%=pom.getIdosoba() %></td>
<td><%=pom.getIme() %></td>
<td><%=pom.getPrezime() %></td>
<td><%=pom.getJMBG() %></td>
<td><%=pom.getVremeUpisa() %></td>
</tr>
<%} %>
</table>
<%} else{%>
NEMA OSOBA !!!
<%} %>