Avatar billede cborg Nybegynder
11. november 2003 - 15:02 Der er 10 kommentarer og
2 løsninger

jdbc:mysql connection problem:(

Forsøger at connecte til en mySQL database hostet ved cliche.dk, men uden videre held. Har hentet jdbc:mysql driveren fra mysql.com, og den er registerert med Class.forName()

Jeg forsøger med connection-stringen:
jdbc:mysql://mysql01.cliche.dk/dbnavn?user=brugernavn&password=brugerkodeord

Er den ikke korrekt formateret? Den finder driveren, men når jeg kalder min DriverManager.getConnection() på forbindelsen, får jeg en
java.net.ConnectException: Connection timed out
Avatar billede joshin Nybegynder
11. november 2003 - 15:08 #1
Prøv "jdbc:mysql:url","user","pass"
Avatar billede joshin Nybegynder
11. november 2003 - 15:13 #2
Her er min database handler klasse:

import java.sql.*;

public class dbHandler extends Object
{
   
    private Connection con=null;

    /** Creates new DataBase */
    public dbHandler()
    {
    }

    public boolean open(String dbDriverName, String dbClassName, String user, String pass)
    {           
//        System.out.println(\"************************************************************************\");
        try
        {
            if(con==null)
            {
                Class.forName(dbDriverName).newInstance();
                con = DriverManager.getConnection(dbClassName, user, pass);
//                System.out.println(\"con = \"+con);
            }
        }
        catch (SQLException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        catch (ClassNotFoundException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        catch (InstantiationException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        catch (IllegalAccessException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        return true;
    }
   
    public void close()
    {
        if(con!=null)
        {
            try
            {
                con.close();
                con=null;
            }
            catch (SQLException e)
            {
                e.printStackTrace(System.out);
            }
        }
    }
   
    public int doUpdate(String sql)
    {
        if(con!=null)
        {
            try
            {
                long time=System.currentTimeMillis();
                Statement stat=con.createStatement();
//                System.out.println(\"SQL Update = \"+(System.currentTimeMillis()-time)+\" ms  \"+sql);
                return stat.executeUpdate(sql);       
            }
            catch (SQLException e)
            {
                e.printStackTrace(System.out);
            }
        }
        return 0;
    }

    public ResultSet executeQuery(String sql)
    {
        if(con!=null)
        {
            try
            {
                long time=System.currentTimeMillis();
                Statement stat=con.createStatement();
              //  System.out.println(\"SQL Update = \"+(System.currentTimeMillis()-time)+\" ms  \"+sql);
                return stat.executeQuery(sql);       
            }
            catch (SQLException e)
            {
                e.printStackTrace(System.out);
            }
        }
        return null;
    }
}
Avatar billede cborg Nybegynder
11. november 2003 - 15:21 #3
Det er ikke det der er galt...
Fik en "driver not found" error da jeg forsøgte at ændre strengen...
Avatar billede cborg Nybegynder
11. november 2003 - 15:22 #4
Et hastigt kig i mySQL dokumentationen giver at strengen er formatteret således...
jdbc:mysql://[hostname][,failoverhost...][:port]/[dbname][?param1=value1][&param2=value2]..... så det er vist ikke det der er galt
Avatar billede arne_v Ekspert
11. november 2003 - 15:33 #5
Er du sikker på at din MySQL database hos Clieche kan accesses udefra ?

(normalt kan den kun accesses fra serveren - og jeg formoder at Cliche
bruger PHP eller ASP og ike JSP)
Avatar billede cborg Nybegynder
11. november 2003 - 15:38 #6
ja - Cliche benytter sig af php til mySQL serveren. Siden webserveren og db-serveren er hostet på to forskelligere servere gik jeg ud fra at de måtte kommunikere på en-eller-anden måde. Hvilken port benytter php sig af? Er der mulighed for en genvej der?

Eller fungerer det på en anden måde?
Avatar billede arne_v Ekspert
11. november 2003 - 15:40 #7
3306
Avatar billede arne_v Ekspert
11. november 2003 - 15:41 #8
Men at der er afgang fra PHP serveren til MySQL serveren betyder ikke
at der er adgang fra hele internettet til MySQL serveren.
Avatar billede arne_v Ekspert
11. november 2003 - 15:42 #9
På et web hotel med høj sikkerhed vil der ikke være nogen måder at gøre
det på (andet end at bruge FTP upload + database load eller database
unload + FTP download).

Jeg kender ikke Cliche.
Avatar billede cborg Nybegynder
11. november 2003 - 15:55 #10
jeg mailer cliche omkring det og får formentlig svar imorgen - jeg går stærkt ud fra at det er grunde. Men tak for hjælpen begge. Kan i ikke lægge et svar så i kan få point for hjælpen.
Avatar billede arne_v Ekspert
11. november 2003 - 15:57 #11
Du kan jo også prøve at se om du kan telnette til port 3306.
Avatar billede arne_v Ekspert
11. november 2003 - 15:59 #12
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester