[ ZeRo8 @ 02.04.2006. 23:18 ] @
Pozdrav.

Aplikacija u napisana u swingu ima meni u kome stoje Connect i Disconnect. Pored toga imam u meniju i Show Table Users. Kad klikenem na Show Table Users on mi izbaci tabelu s korisnicima koje pokupi iz baze. Kad onda idem na Disconnect, pa opet na Connect i probam ponovo da pozovem Show Table Users on mi jevlja SQL exception "Connection is closed". Ovo su metode:

Code:

public static void connect() {
        
        if(conn==null) {
            
            try {
                //login data 
                String userName = "sa";
                String password = "";
                
                //driver loading
                Class.forName("org.hsqldb.jdbcDriver");
                
                //url specification
                String url = "jdbc:hsqldb:/home/ivan/MyBookstore/MyBookstore";

                //getting connection
                conn = DriverManager.getConnection(url, userName, password);
                
                //setting Connection state
                connState = true;
                System.out.println("Database connection OPENED");
                if(conn.isClosed()) {System.out.println("CLOSSSSEEEES"); }
              
            } catch (Exception e)
                {        
                System.out.println("Cannot connect to database server --> " + e);
                }
        
        }
        else {
            System.out.println("Allredy Connected");
        }
    }
    
    //DISCONNECT Method
    public static void disconnect() {
            System.out.println("Database Connection CLOSED");
            try {
                stmt = conn.createStatement();
                stmt.execute("SHUTDOWN");
                stmt.close();
                conn.close();
                stmt=null;
                conn =null;
                connState=false;
            } catch(SQLException e) {
                connState=false;
                stmt=null;
                conn =null;
                System.out.println("Disconnecting ERROR:\t" + e);
            }    
        }
    
[ vlada.d @ 08.04.2006. 09:40 ] @
Koliko vidim na brzaka na pogresnom mestu si deklarisao Statement varijablu (stmt = conn.createStatement(),u "DISCONNECT Method", umesto u "connect()"), i fali ti njene inicijalizacij.

Probaj isravku u "connect()" :

...
//getting connection

conn = DriverManager.getConnection(url, userName, password);
stmt = conn.createStatement();
...

, a iz "DISCONNECT Method" izbaci

stmt = conn.createStatement();


Valjda ce pomoci...

Poz...




[ _owl_ @ 08.04.2006. 21:37 ] @
Ma da sigurno je tu problem. Nego jesi li ti cuo da u objektno orijentisanom principu klase treba da predstavljaju strukture podataka sa definisanim metodama za operacije nad tim podacime.

@ZeRo8
Procitaj malo Java JDBC dokumentaciju, mozda pronadjes metodu Connection.close() koja sluzi za zatvaranje konekcije sa bazom. Bas me zanima odakle ti ideja da izdavanjem komande SHUTDOWN zatvaras konekciju sa bazom (bar sto se JDBC drajvera tice). Pre ce biti da tako gasis celu bazu.
[ anon315 @ 08.04.2006. 22:13 ] @
To je primer za hsqldb :D
[ logotet @ 09.04.2006. 12:55 ] @
Ne vidim ti kod za opciju Show Table Users, ali mi mirise da prilikom ponovnog poziva ne prosledjujes novu instancu konekcije, vec staru koja je zatvorena.
[ ZeRo8 @ 09.04.2006. 14:01 ] @
@_owl_

SHUTDOWN gasi konekciju s bazom, kod HSQLDB (pisan u javi, mislim da je jedino po tome poznat).

Hvala u svakom slucaju, ali problem sam resio ubrzo nakon postavljenog posta. U sustini ne mora se kreirati uvek konekcija da bi se kreirao statement. Tako da sam resio to tako da imam Klasu MyConnection u kojoj se kreira konekcija koja ce biti vracena metodom. Imam pored toga i klasu MySQLQueries koja pokuplja tu konekciju i izvrsava upite. Posle svakog zavrsenog upita zatvara statement i kad je potrebno otvara novi.