[Java] J/Connector wil niet werken.

Pagina: 1
Acties:

  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Ik heb J/connector gedownload van de site van MySQL en nu wil ik hem laten werken alleen wil dat niet echt. Ik heb het stukje van MySQl gemaakt om te testen alleen krijg ik daar de volgende foutmelding:

> Executing: C:\PROGRAM FILES\CONTEXT\ConExec.exe "C:\Program Files\j2sdk1.4.2_05\bin\javac.exe" "F:\stage\Bers\Programma\Database Connectie\LoadDriver.java"

F:\stage\Bers\Programma\Database Connectie\LoadDriver.java:14: unreported exception java.lang.ClassNotFoundException; must be caught or declared to be thrown
Class.forName("com.mysql.jdbc.Driver").newInstance();
^
F:\stage\Bers\Programma\Database Connectie\LoadDriver.java:14: unreported exception java.lang.InstantiationException; must be caught or declared to be thrown
Class.forName("com.mysql.jdbc.Driver").newInstance();
^
2 errors
> Execution finished.

Dit is mijn code:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.sql.Connection;
import java.sql.DriverManager; 
import java.sql.SQLException; 

// Notice, do not import com.mysql.jdbc.* 
// or you will have problems! 

public class LoadDriver
{
  public static void main(String[] args)
    {
    try
        {
      Class.forName("com.mysql.jdbc.Driver").newInstance();
            Connection conn = DriverManager.getConnection("jdbc:mysql://100.1.1.1/bromedo_esmono?blaat");
      // Do something with the Connection
    }
        catch (SQLException ex)
        {
      // handle any errors
      System.out.println("SQLException: " + ex.getMessage());
      System.out.println("SQLState: " + ex.getSQLState());
      System.out.println("VendorError: " + ex.getErrorCode());
    }
    }
}


Verder heb ik de .jar package al opgenomen in mijn autoexec.bat. Eigenlijk hoeft dit niet omdat heir een mapje in java voor zit. het betreffende "ext" mapje.

Kan iemand mij vertellen waarom dit niet werkt. Ik zag wel veel info over de .org package maar jha deze is nieuwer en die wil ik ook graag werkend hebben.

[ Voor 5% gewijzigd door BSeB op 27-09-2004 13:12 . Reden: Wachtw en username vergeten te editen ]


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Je moet ook een catch block maken voor ClassNotFoundException. Dat moet omdat forName() die kan opgooien.

"Beauty is the ultimate defence against complexity." David Gelernter


  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Macros schreef op 27 september 2004 @ 13:14:
Je moet ook een catch block maken voor ClassNotFoundException. Dat moet omdat forName() die kan opgooien.
Zou je dit wat verder kunnen verklaren. Ik ben niet bekend met de forname namelijk heb al wel gezocht op GoT erover, maar kan alleen soortgelijke problemen vinden maar niet de antwoorden.

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class LoadDriver 
{ 
  public static void main(String[] args) 
    { 
    try 
        { 
      Class.forName("com.mysql.jdbc.Driver").newInstance(); 
            Connection conn = DriverManager.getConnection("jdbc:mysql://100.1.1.1/bromedo_esmono?blaat"); 
      // Do something with the Connection 
    } 
        catch(ClassNotFoundException e)
        {
            e.printStackTrace();
        }
        catch (SQLException ex) 
        { 
      // handle any errors 
      System.out.println("SQLException: " + ex.getMessage()); 
      System.out.println("SQLState: " + ex.getSQLState()); 
      System.out.println("VendorError: " + ex.getErrorCode()); 
    } 
    } 
}

"Beauty is the ultimate defence against complexity." David Gelernter


  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Jepz, je hebt gelijk, die error is er nu uit. Moet ik nu voor die andere error iets vergelijkends doen?

Beide errors is hier weinig info over te vinden.

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Ik zou eens de manual van Java lezen en dan het stuk over Exceptions.

"Beauty is the ultimate defence against complexity." David Gelernter


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 19:40

Robtimus

me Robtimus no like you

Macros schreef op 27 september 2004 @ 15:27:
Ik zou eens de manual van Java lezen en dan het stuk over Exceptions.
Afbeeldingslocatie: http://www.robspoor.demon.nl/smileys/stupid.gif ;)


Je hebt in dat try block 2 statements staan:
Java:
1
2
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://100.1.1.1/bromedo_esmono?blaat");
Die tweede kan een SQLException gooien ja. Maar die eerste kan dus ook Exceptions gooien. En elke niet-runtime exceptie moet je of afvangen (catch) of doorgooien (throws ....Exception in de methodsignature, bv public void read() throws IOException).

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • MBV
  • Registratie: Februari 2002
  • Laatst online: 19-05 21:26

MBV

hij zegt ook "unreported exception" "Must be caught". Het is dus een compile-error. Als de error daadwerkelijk optreed, klinkt het iets anders :)

  • momania
  • Registratie: Mei 2000
  • Laatst online: 21-05 06:42

momania

iPhone 30! Bam!

BSeB schreef op 27 september 2004 @ 15:16:
Jepz, je hebt gelijk, die error is er nu uit. Moet ik nu voor die andere error iets vergelijkends doen?

Beide errors is hier weinig info over te vinden.
Ja je moet voor de laatste precies hetzelfde doen. Over de errors zelf hoef je ook niets te zoeken, je moet de melding goed lezen ;)

Regel waar het mis gaat:
code:
1
F:\stage\Bers\Programma\Database Connectie\LoadDriver.java:14:

Wat er mis is:
code:
1
unreported exception java.lang.InstantiationException; must be caught or declared to be thrown

Dus je moet of verplicht die exception catchen, of je de method waarin je de call maakt die de exception kan gooien, moet deze exception ook gooien.

Stukje code wat wat volgens de compiler de oorzaak is van de error:
code:
1
Class.forName("com.mysql.jdbc.Driver").newInstance();

Neem je whisky mee, is het te weinig... *zucht*


  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 12-05 15:26

Eelke Spaak

- Vlad -

De Class.forName() aanroep is er alleen voor om te zorgen dat je zeker weet dat de JVM je driver class kan vinden. Volgens mij is de newInstance() aanroep niet eens nodig daarvoor; als je die weglaat kan je ook het afvangen van de InstantiationException achterwege laten.

TheStreme - Share anything with anyone


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 19:40

Robtimus

me Robtimus no like you

Eelke Spaak schreef op 28 september 2004 @ 10:57:
De Class.forName() aanroep is er alleen voor om te zorgen dat je zeker weet dat de JVM je driver class kan vinden. Volgens mij is de newInstance() aanroep niet eens nodig daarvoor; als je die weglaat kan je ook het afvangen van de InstantiationException achterwege laten.
Klopt, zo heb ik het ook vaker gedaan.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Moet ik om die newinstance toe te passen niet iets tussen die () plaatsen.

Ik heb nu een catch blok voor deze gemaakt alleen geeft hij dus nu een andere fout. Heb al gezocht op java docs, maar kan niks erover vinden. Concreet voorbeeld bedoel ik dan.

catch(InstantiationException s)
{
s.printStackTrace();

Op java staat:

InstantiationException
public InstantiationException()Constructs an InstantiationException with no detail message.

Daar kan ik dus weinig mee als ik niet weet wat ik er precies mee moet.

[ Voor 25% gewijzigd door BSeB op 29-09-2004 10:09 ]


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Misschien is het toch eens handig om een boek open te slaan over Exceptions.

"Beauty is the ultimate defence against complexity." David Gelernter


  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Ben ik allang aan het zoeken, maar kan online niks vinden. Nog niet iig

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

"Beauty is the ultimate defence against complexity." David Gelernter


  • bodiam
  • Registratie: December 2001
  • Laatst online: 31-12-2024
Exceptional practices, Part 1

Deel 1 van een 3 part serie. Ik zou ze allemaal lezen.

  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Hier ben ik weer. Ik heb de tijd gehad/genomen om dat stuk van de javawebsite over exceptions te lezen. Was idd best de moeite waard. Alleen snap ik een paar dingen nog niet. Ik heb iig geleerd dat het beter is je meldingen in een Printfile te laten zetten. Is beter voor de code en je programma. Dus een outfile.txt. Er zat in het programma nog geen finally blok al is het niet verplicht het is wel netter ivm het niet sluiten van je outfile.

Maar nu heb ik ook de error gevonden die optreed door de newinstance. Hier heb ik een catch blok voor gevonden.

Alleen nu heb ik 2 verschillende dingen:

-e.printStackTrace();
en
-System.out.println("SQLException: " + ex.getMessage());

Wat doet de eerste. De tweede print gewoon een line in de outfile. De eerste volgens mij niet. Hoe kan ik dit aanpassen dat dit wel gebeurd.

Tevens werkt dit catch blok voor die NewInstance nog steeds niet :( kan iemand me zeggen wat ik fout heb gedaan en of ik misschein nog een import moet doen?

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import java.io.*;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


// Notice, do not import com.mysql.jdbc.* 
// or you will have problems! 

public class LoadDriver
{
  public static void main(String[] args)
    {
    PrintWriter out = null;

        try
        {
      System.out.println("Entering try statement");
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            Connection conn = DriverManager.getConnection("jdbc:mysql://100.1.1.1/bo?user=Master&password=******");
      out = new PrintWriter(new FileWriter("OutFile.txt"));
            // Do something with the Connection
    }
    catch (IOException e)
    {
      System.err.println("Caught IOException: " + e.getMessage());
    }
        catch(ClassNotFoundException e)
    {
      e.printStackTrace();
    }
    catch (NoSuchMethodException e) 
    {
        InstantiationException Instant = new InstantiationException(e.getMessage());
        Instant.printStackTrace(); 
    } 
    catch (SQLException ex)
        {
      // handle any errors
      System.out.println("SQLException: " + ex.getMessage());
      System.out.println("SQLState: " + ex.getSQLState());
      System.out.println("VendorError: " + ex.getErrorCode());
    }
    finally
    {
      if (out != null)
            {
              System.out.println("Closing Printwriter");
              out.close();
            }
            else
            {
              System.out.println("Printwriter not open");
            }
        }
    }
}

  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

BSeB schreef op 05 oktober 2004 @ 09:14:
Hier ben ik weer. Ik heb de tijd gehad/genomen om dat stuk van de javawebsite over exceptions te lezen. Was idd best de moeite waard. Alleen snap ik een paar dingen nog niet. Ik heb iig geleerd dat het beter is je meldingen in een Printfile te laten zetten. Is beter voor de code en je programma. Dus een outfile.txt. Er zat in het programma nog geen finally blok al is het niet verplicht het is wel netter ivm het niet sluiten van je outfile.

Maar nu heb ik ook de error gevonden die optreed door de newinstance. Hier heb ik een catch blok voor gevonden.

Alleen nu heb ik 2 verschillende dingen:

-e.printStackTrace();
en
-System.out.println("SQLException: " + ex.getMessage());


Wat doet de eerste. De tweede print gewoon een line in de outfile. De eerste volgens mij niet. Hoe kan ik dit aanpassen dat dit wel gebeurd.
Misschien door volgende te doen?
Java:
1
System.out.println(e.printStackTrace());


Een ClassNotFound/NoSuchMethod exception hoor je trouwens niet te catchen.

Voor het loggen van de applicatie kan je misschien ook eens naar log4j kijken...

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 19:40

Robtimus

me Robtimus no like you

-FoX- schreef op 05 oktober 2004 @ 09:30:
Een ClassNotFound/NoSuchMethod exception hoor je trouwens niet te catchen.
Een CNF exception juist wel: je moet juist weten dat de driver niet gevonden kan worden. WAAR je hem dan catched (hier of in een calling method (die er hier even niet is)) kun je nog over discussieren, maar je moet hem zeker wel catchen.
Ik vraag me alleen wel af waar die NSM exception vandaan komt. Die wordt volgens mij niet eens gegooid.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Ik heb het gevonden. Even op Javan op NewInstance gezocht, het programma word nu als volgt:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import java.io.*;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


// Notice, do not import com.mysql.jdbc.* 
// or you will have problems! 

public class LoadDriver
{
  public static void main(String[] args)
    {
    PrintWriter out = null;

        try
        {
      System.out.println("Entering try statement");
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            Connection conn = DriverManager.getConnection("jdbc:mysql://100.1.1.1/bromedo_esmono?user=Master&password=06101982");
      out = new PrintWriter(new FileWriter("OutFile.txt"));
            // Do something with the Connection
    }
    catch (IOException e)
    {
      System.err.println("Caught IOException: " + e.getMessage());
    }
        catch(ClassNotFoundException e)
    {
      e.printStackTrace();
    }
    catch (IllegalAccessException e)
        {
      System.out.println(e);
    }
    catch (InstantiationException e)
        {
      System.out.println(e);
    }
    catch (SQLException ex)
        {
      // handle any errors
      System.out.println("SQLException: " + ex.getMessage());
      System.out.println("SQLState: " + ex.getSQLState());
      System.out.println("VendorError: " + ex.getErrorCode());
    }
    finally
    {
      if (out != null)
            {
              System.out.println("Closing Printwriter");
              out.close();
            }
            else
            {
              System.out.println("Printwriter not open");
            }
        }
    }
}


Ik wil nu alleen de laatste paar exceptions ook in die errorlog laten opnemen. Dus outfile.txt. Had het op de manier van bovengeschrevenen geprobeerd alleen dat werkt niet.

Kan iemand me uitleggen hoe het wel moet. Nu krijg ik namelijk alles wat ik doe in mijn compile scherm te zien:

> Executing: C:\PROGRAM FILES\CONTEXT\ConExec.exe "C:\Program Files\j2sdk1.4.2_05\bin\java.exe" LoadDriver

Entering try statement
SQLException: Communication link failure: java.net.SocketException, underlying cause: Connection reset

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: Connection reset

STACKTRACE:

java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:183)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:222)
at java.io.BufferedInputStream.read(BufferedInputStream.java:277)
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1391)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1538)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1929)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1906)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:954)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:1782)
at com.mysql.jdbc.Connection.<init>(Connection.java:450)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:411)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:193)
at LoadDriver.main(LoadDriver.java:21)


** END NESTED EXCEPTION **


SQLState: 08S01
VendorError: 0
Printwriter not open
> Execution finished.

Als het goed is, zou het nu dus moeten werken! Op die ene vraag na dan!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 19:40

Robtimus

me Robtimus no like you

Lijkt erop dat de MySQL server wat lastig doet, daarom die Connection reset melding. Het is iig niet dat hij de host niet kan vinden of dat de user niet geauthoriseerd kan worden, want dan krijg je deze meldingen:
SQLException: Unable to connect to any hosts due to exception: java.net.ConnectException: Connection timed out: connect

SQLException: Invalid authorization specification, message from server: "Access
denied for user: 'nobody@localhost' (Using password: NO)"
Maar die eerste geeft wel dezelfde SQLState en VendorError terug. Zoek daar maar eens naar de oplossing.

[ Voor 3% gewijzigd door Robtimus op 05-10-2004 10:41 ]

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Waar moet ik op zoeken dan?

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 19:40

Robtimus

me Robtimus no like you

Waarom de MySQL server het niet doet, want daar ligt het probleem.
Dus:
- kun je de server wel bereiken (pingen). Lijkt me wel omdat je anders een timeout krijgt
- kun je inloggen op de server via een gewone MySQL client (dus niet Java)
- ...

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Server is gereboot. Nu krijg ik deze message die ik zelf eigenlijk ook vraag met mijn final blok:

> Executing: C:\PROGRAM FILES\CONTEXT\ConExec.exe "C:\Program Files\j2sdk1.4.2_05\bin\java.exe" LoadDriver

Entering try statement
Closing Printwriter
> Execution finished.

Dus het werkt nu

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 19:40

Robtimus

me Robtimus no like you

Fijn om gelijk te hebben :P

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Thnx voor al jullie hulp en verwijzingen naar tutorials B) B)
Pagina: 1