Avatar billede devpac Nybegynder
30. oktober 2001 - 22:01 Der er 11 kommentarer

MySql DriverManager.getConnection failed

Jeg har et problem med at få forbindelse med min MySql server fra en applet via nedenstående kode. Min Class.forName() går fint, men min DriverManager.getConnection() fejler.

Min MySql er kørende og jeg når den fint via PHP.
(Skal min JDBC driver registrers på en eller anden måde ?)

---------- KODEN:

class DBconnect {

    private static final String hostname = \"localhost\";
    private static final String port = \"3306\";
    private static final String database = \"TestDB\";
    private static final String username = \"root\";
    private static final String password = \"\";

    String returnString;   

    public String TrySelect() {

        Connection c = getConnection();
   
        // do an SELECT
        try {
            Statement s = (Statement)c.createStatement();

            ResultSet r = s.executeQuery(\"SELECT fname FROM names\");
            returnString = r.getString(\"fname\");
           
        } catch ( Exception e ) {returnString = returnString + \" - Query failed\";}
       
        return returnString;

    }

  private Connection getConnection() {
        // Register the driver using Class.forName()
        try {
            Class.forName(\"org.gjt.mm.mysql.Driver\").newInstance();
       
        } catch ( Exception e ) {returnString = \"forName failed\";}
       
        // ask the DriverManager for a connection to the database
        Connection conn = null;
        try {
            conn = DriverManager.getConnection(\"jdbc:mysql://\" + hostname + \":\"+ port +\"/\" + database + \"?user=\" + username + \"&password=\" + password );
            //conn = DriverManager.getConnection(\"jdbc:mysql://localhost:3306/TestDB\");
       
        } catch ( Exception e) {returnString = \"DriverManager failed\";}
   
        return conn;
    }
   

}
Avatar billede lbhansen Nybegynder
30. oktober 2001 - 22:45 #1
nu fortæller det jo ikke meget om hvilken fejl der sker.

når du fanger din exception, vil det nytte en del, hvis du lige laver en
System.err.println(e.getMessage());
e.printStackTrace();

Så kan du læse beskeden i din java konsol, som du kan slå til i browseren, eller anvende appletvieweren.

Det der virker som en sandsynlig fejl er, at din mysql er sat op til ikke at modtage forbindelser for andet end localhost(virker din applet når du kører den på serveren selv?)
Avatar billede devpac Nybegynder
31. oktober 2001 - 23:35 #2
Tak lbhansen !

- Det er stærke sager at se java konsollen for første gang.

----- Jeg får nu følegende fejlmeddelelser:

com.ms.security.SecurityExceptionEx[org/gjt/mm/mysql/MysqlIO.<init>]: cannot access \"localhost\"
    at com/ms/security/permissions/NetIOPermission.check
    at com/ms/security/PolicyEngine.deepCheck
    at com/ms/security/PolicyEngine.checkPermission
    at com/ms/security/StandardSecurityManager.chk
    at com/ms/security/StandardSecurityManager.chkex
    at com/ms/security/StandardSecurityManager.checkConnect
    at java/net/InetAddress.getAllByName0
    at java/net/InetAddress.getByName
    at java/net/Socket.<init>
    at org/gjt/mm/mysql/MysqlIO.<init>
    at org/gjt/mm/mysql/jdbc2/IO.<init>
    at org/gjt/mm/mysql/jdbc2/Connection.createNewIO
    at org/gjt/mm/mysql/Connection.connectionInit
    at org/gjt/mm/mysql/jdbc2/Connection.connectionInit
    at org/gjt/mm/mysql/Driver.connect
    at java/sql/DriverManager.getConnection
    at java/sql/DriverManager.getConnection
    at DBconnect.getConnection
    at DBconnect.TrySelect
    at mysqlrun.init
    at com/ms/applet/AppletPanel.securedCall0
    at com/ms/applet/AppletPanel.securedCall
    at com/ms/applet/AppletPanel.processSentEvent
    at com/ms/applet/AppletPanel.processSentEvent
    at com/ms/applet/AppletPanel.run
    at java/lang/Thread.run
Cannot connect to MySQL server on localhost:3306. Is there a MySQL server running on the machine/port you are trying to connect to? (com.ms.security.SecurityExceptionEx)
java.sql.SQLException: Cannot connect to MySQL server on localhost:3306. Is there a MySQL server running on the machine/port you are trying to connect to? (com.ms.security.SecurityExceptionEx)
    at org/gjt/mm/mysql/Connection.connectionInit
    at org/gjt/mm/mysql/jdbc2/Connection.connectionInit
    at org/gjt/mm/mysql/Driver.connect
    at java/sql/DriverManager.getConnection
    at java/sql/DriverManager.getConnection
    at DBconnect.getConnection
    at DBconnect.TrySelect
    at mysqlrun.init
    at com/ms/applet/AppletPanel.securedCall0
    at com/ms/applet/AppletPanel.securedCall
    at com/ms/applet/AppletPanel.processSentEvent
    at com/ms/applet/AppletPanel.processSentEvent
    at com/ms/applet/AppletPanel.run
    at java/lang/Thread.run

Så vidt jeg kan se er det min \"com.ms.security.SecurityExceptionEx\" jeg bør være bekymret for !? - Eller er der ander forslag ? - hvad kan jeg gøre her ?

Forresten min applet kører på serveren
Avatar billede lbhansen Nybegynder
01. november 2001 - 07:35 #3
Din applet bliver jo kørt på klienten, og det ser ud til at du prøver at connecte til localhost, og det går jo ikke.

Du skal huske at connecte til den maskine din mysql kører på, og det skal være den samme som hvor din webserver kører
Avatar billede lbhansen Nybegynder
01. november 2001 - 07:36 #4
det burde jeg selvfølgelig også godt kunne læse ud af din kode. Havde lige overset, at du sætter hostname = \"localhost\".
Avatar billede devpac Nybegynder
01. november 2001 - 09:51 #5
Jeg har forsøgt mig med IP-adressen / navnet på serveren uden større held.

Har du andre ideér ?
Avatar billede lbhansen Nybegynder
01. november 2001 - 19:05 #6
så må du jo sige hvilken fejlmeddelelse du får istedet.
Avatar billede lyhr007 Nybegynder
01. november 2001 - 20:43 #7
Det er fordi at din applet ikke må lave connections andet end den er sign\'et.

http://www.microsoft.com/java/security/secfaq.htm

Hent MS JDK (og brug kun deres signer), herefter kan du lave en .cab fil som er signet. Denne vil så virke i IE, med de rettigheder du giver den.
Avatar billede lbhansen Nybegynder
01. november 2001 - 20:53 #8
en Applet må sagtens lave connections tilbage til den samme host, som den kommer fra.
Avatar billede devpac Nybegynder
01. november 2001 - 23:31 #9
Jeg får nøjagtig samme fejl ligemeget om jeg kører på localhost eller IP adressen (fejl som ovenstående).

Er det fordi IE har problemer med at afvikle appleten direkte på samme maskine som serveren ???
(jeg prøvede at kører appleten i netscape men fik samme fejl).

Hvordan får man lavet en .cab fil (jeg har hentet MS JDK) og hvordan afviklees den ?
Avatar billede lyhr007 Nybegynder
02. november 2001 - 11:10 #10
http://www.securingjava.com/appdx-c/appdx-c-2.html

http://www.suitable.com/CodeSigningCerts.shtml

http://support.microsoft.com/support/kb/articles/Q168/9/41.asp

Ibhansen, jeg kan se at han for en security exception, hvilket betyder han gør noget han ikke har rettighed til i applet\'en. Hvis han signer og for alle rettigheder, og stadig for en fejl kan vi tage det fra det punkt.
Avatar billede devpac Nybegynder
06. november 2001 - 09:17 #11
Hvis det er sikkerhedsopsætningen på klienten, som blokere, kan jeg så ikke bare sætte den helt i bund så appletten får alle muligheder ?
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