Olen tekemässä javalla MySQL:n tietokantaa, josta voi hakea esim. kavereiden osoitteita ja puh. numeroja. Homma tyssäsi heti alkuunsa, sillä pääohjelma ei löydä tarvittavia luokkia, vaikka ne takuu varmasti ovat samassa hakemistossa. Kun liitän koodin koodin pääohjelman perään, homma toimii hyvin, mutta haluaisin tehdä heti alkuunsa koodista selkeämmän tekemällä useamman luokan. Käytän JBuilderia. Olen tehnyt sillä monta ohjelmaa, jossa käytän olioita ja luokkia, enkä ymmärrä miksi tämä ei nyt toimi.
Pääohjelma:
public class Kaverit extends JFrame{ Tietokannat tk = new Tietokannat() ; MyTableModel myModel = new MyTableModel() ; ... public static void main(String[] args) { Kaverit app = new Kaverit(); app.pack(); app.show(); } public Kaverit() { try { jbInit(); } catch(Exception e) { e.printStackTrace(); } tk.muodostaYhteys(); }
class Tietokannat { private Connection con; public void muodostaYhteys() throws Exception { //Ladataan tietokannan ajurit. try { Class.forName("com.mysql.jdbc.Driver").newInstance(); } catch (ClassNotFoundException cnfe) { cnfe.printStackTrace(); throw new Exception("JDBC-ajurin rekisteröinti epäonnistui."); } //Muodostetaan yhteys kantaan. try { String url = "jdbc:mysql://localhost/javatesti"; con = DriverManager.getConnection(url,"xxx","xxxx"); } catch(SQLException se) { se.printStackTrace(); throw new Exception("Kantaan ei saatu yhteyttä."); } }
Mikäli ymmärsin oikein, niin silloin, kun luokat Kaverit ja Tietokannat ovat samassa tiedostossa, ohjelma kääntyy (toimii). Onhan luokan Tietokannat sisältävä tiedosto nimeltään Tietokannat.java? Myös luokan määrittely täytyy muuttaa muodosta "class Tietokannat" muotoon "public class Tietokannat".
Aihe on jo aika vanha, joten et voi enää vastata siihen.