Ako ti prethodna poruka mozda nije bila bas najjasnija, covek je hteo da ti kaze da treba da napravis jedan sloj softvera koji radi sa bazom a tvojoj aplikaciji vraca podatke, odnosno omogucava ti da postavljas upite bazi na isti nacin, bez obzira da li se dole ispod tog sloja nalazi MySQL, Postgres ili bilo koja druga baza. Razlika ce biti samo u tom sloju i sastojace se od minimanih izmena, dok tvoja aplikacija nece da se menja. A to treba izbegavati jer je skupo (oduzima dosta vremena).
Znaci: napravis jednu klasu npr. Kernel (tako je ja obicno nazivam) koja koja bi mogla da izgleda ovako:
Code:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Kernel {
private Connection veza;
private String host;
private String baza;
private String user;
private String password;
public Kernel(String host, String baza, String user, String password) throws NeuspesnaKonekcija {
this.host=host;
this.baza=baza;
this.user=user;
this.password=password;
try {
System.out.print("Ucitavanje Driver-a .............. ");
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
} catch (Exception e) {
e.printStackTrace();
System.out.println("Nije ucitan Driver");
throw new NeuspesnaKonekcija("Nije ucitan Driver.");
}
System.out.println("OK");
try{
String urlBaze="jdbc:mysql://"+host+"/"+baza+"?user="+user+"&password="+password;
System.out.print("Kreiranje konekcije .............. ");
veza=DriverManager.getConnection(urlBaze);
System.out.println("OK");
} catch (SQLException sqle) {
sqle.printStackTrace();
throw new NeuspesnaKonekcija("Neuspesno uspostavljanje konekcije sa bazom");
}
System.out.println("Veza sa bazom uspostavljena");
}
public ResultSet upitSelekcije(String upit) {
ResultSet tabela=null;
try {
Statement statement=veza.createStatement();
tabela=statement.executeQuery(upit);
} catch (SQLException sqle) { sqle.printStackTrace(); }
return tabela;
}
public int upitIzmene(String upit) {
int kod=-1;
try {
Statement statement=veza.createStatement();
kod=statement.executeUpdate(upit);
} catch (SQLException sqle) { sqle.printStackTrace(); }
return kod;
}
public int brRedova(ResultSet rs) {
int i=0;
try {
while (rs.next()) i++;
rs.beforeFirst();
} catch (SQLException sqle) { sqle.printStackTrace(); }
return i;
}
public void zatvoriKonekciju() {
if (veza!=null) {
try {
veza.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
Ovo bi trebalo da radi ako imas instaliran MySQL i JDBC driver za njega
(mysql-connector-java-3.1.7-bin.jar fajl koji snimis u jdk_dir/jre/lib/ext/)
Ako menjas MySQL DBMS nekim dugim od cele aplikacije ces izmeniti samo ovaj fajl i to onaj red:
Code:
String urlBaze="jdbc:mysql://"+host+"/"+baza+"?user="+user+"&password="+password;
Takodje ces morati da dodas i novi jar fajl (u onaj ext dir.), a koji odgovara DBMS-u.
Pozdrav