mislim da ne bi bilo lose da postoji klasa (na primer RadSaBazom) koja ce da "radi" sve sto se tice obracanja bazi, a da njene metode samo pozivas iz glavnog programa. za ovo sto si hteo, jedno (i ne bas "cisto") resenje bi moglo da bude ovako:
Code:
import java.sql.*;
public class RadSaBazom {
private static final String dbPath = "c:/moj_program/baza.mdb";
private static Connection con;
private static Statement s;
private static ResultSet rs;
public RadSaBazom() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+dbPath;
con = DriverManager.getConnection( database ,"","");
s = con.createStatement();
} catch (Exception e) {
System.out.println("Error: " + e);
}
}
private static String dovuciGodiste(String ime) {
try {
// ovde pazi da se nazivi kolona i tabela slazu sa tvojim nazivima u bazi!!!
s.execute("SELECT Godiste FROM Tabela WHERE Ime = \'"+ime+"\'");
rs = s.getResultSet();
// sad si u rs smestio rezultat SQL upita, a to je vrednost
// kolone Godista u redu u kome je Ime jednako Stringu ime.
// imaj na umu da moze da se desi da vise ljudi ima isto ime,
// i u tom slucaju ce rs sadrzati nekoliko godista.
// inace, bolje bi bilo da svako ime ima svoju jedinstvenu siftu, ali
// da se ne bi smarali sa tim, pretpostavicemo da su imena jednistvena.
} catch (Exception e) {
System.out.println("Error: " + e);
}
//ok sad treba da izvuces godinu rodjenja iz rs-a, a to se moze uraditi ovako:
try {
rs.next();
String god = rs.getString(1);
//ovo 1 se odnosi na prvu kolonu rezultata (u ovom slucaju ne postoje kolone 2,3..)
rs.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
// na kraju bi trebalo da zatvoris konekciju ka bazi...
try {
s.close();
con.close();
} catch (Exception e) {
if (dbg) System.out.println("Error: " + e);
}
return god; //vraca godiste.
}
} //kraj klase
dakle, ako u glavnom programu/formi imas hendler klikna u listboxu, onda iz njega pozoves ovaj metod u klasi koji ti vraca godiste na osnovu imena, i to godiste posle smestis u neku komponentu na formi ili sta si vec zamislio...
e sad, nemoj 100% da se pouzdas u ovo jer ne znam kako ti tacno izgleda baza i program, ali to je ta prica, cisto da ukapiras sta kako ide.
naravno, ovo je primer lose programerske prakse, jer bi trebalo da postoji privatan metod koji smesta rezultat u rs i koji ce se pozivati iz javnog metoda dovuciGodiste. takodje bi deo koda koji zatvara konekciju sa bazom trebalo da bude smesten u poseban metod itd... no, kao sto rekoh, ovo je vise neko kao "objasnjenje" nego konkretno resenje problema.
pozdrav
p.s. mozda ne bi bilo lose da napravis da se listbox "sam" puni imenima iz kolone imena (tako ces uvek biti siguran da je lista imena azurna ako nekad promenis sadrzaj baze).
[Ovu poruku je menjao Andreja Dulovic dana 22.08.2006. u 02:06 GMT+1]