Toon posts:

[Java] Includen mmMySQL driver

Pagina: 1
Acties:

Verwijderd

Topicstarter
Als ik nu gebruik wil maken van een mmMySQL driver, dan doe ik een
Java:
1
Class.forName("org.gjt.mm.mysql.Driver").newInstance();

Maar als ik nu alle classes van deze mySQL driver wil includen in mijn project?

Dan doe ik dus een
Java:
1
import org.gjt.mm.mysql.Driver;

Maar als ik dan de code run, komt ie met een SQLException (no suitbale driver found). Wat ben ik vergeten? En wat moet er als vervanging komen voor de Class.forName()?

PS Het gaat er NIET om waarom ik dit wil, maar HOE het werkzaam te krijgen is :)

Verwijderd

import org.gjt.mm.mysql.*;

oid

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

SQLException
Wat throwt die exception dan? Wat zijn de omstandigheden?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

idd, kom bijvoorbeeld eens met de error en de stacktrace die erbij staat

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Blijkbaar is dat importen niet genoeg, want er komt een
Java:
1
SQLException: No suitable driver

Maar de
Java:
1
Class.forName("org.gjt.mm.mysql.Driver").newInstance();

heb ik dus eruit gehaald, en dat compileert prima. Maar blijkbaar vind ie toch de driver niet? Het enige dat ik wil weten is hoe ik deze driver classes in mijn project kan includen :)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
De driver moet zichzelf aanmelden bij de DriverManager. Dat doet de Driver als je er een nieuwe instantie van aanmaakt. Pas daarna weet de DriverManager dat de MySQL driver aanwezig is en voor welke databases hij gebruikt kan worden.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

mbravenboer: werkt het eigenlijk ook als je gewoon doet:
Java:
1
new org.gjt.mm.mysql.Driver ();

?
want ik neem aan dat dat is wat de TS wilt :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ja dat werkt ook ja :) .

Meestal wordt echter de Class.forName methode aangeraden. Normaal gesproken zou hij zich namelijk al aan moeten melden als alleen de klasse geladen is. Hij meldt zich dan aan in het static initializatie block van de klasse. Dit wordt natuurlijk ook uitgevoerd als je een nieuwe instantantie maakt, maar eigenlijk zou dat niet nodig moeten zijn.

Er zijn nog wel meer voordelen van de Class.forName methode: er kan dan eventueel via een configuratie systeem een ander driver of zelfs een ander type database gebruikt worden. Ook is er dan geen compile-time afhankelijkheid van de MySQL driver. Het hele idee van JDBC is dat je de Driver eigenlijk helemaal niet ziet.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

ah ja das waar ook (tijd geleden dat ik iets met JDBC heb gedaan, en dat was nog voor school ook, dus dat vergeet je het liefst maar weer zo snel mogelijk :P). Maar die newInstance () van de TS is dus ook nog niet eens nodig, het gaat er alleen om dat je die klasse inlaadt

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Maar goed, als ik de Class.forName() erin laat, dan is de
Java:
1
import org.gjt.mm.mysql.Driver;

niet genoeg om het te laten werken :( (die SQLException)

Verwijderd

Topicstarter
Zal wel eens verder gaan google-en, misschien dat ik er ergens iets over vind...

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Sommige drivers melden zich pas aan als je een nieuwe instantie aanmaak, dus het is eigenlijk beter om dat altijd maar te doen. Ik weet eigenlijk niet of het ook officieel verplicht is.

Die import is volledig nutteloos als je met Class.forName werkt.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • momania
  • Registratie: Mei 2000
  • Nu online

momania

iPhone 30! Bam!

Het enige waar je voor moet zorgen is dat die jar file waar de driver in staat in je classpath staat. Dan moet het gewoon werken...

De import is idd nutteloos icm een Class.forName.
Maar vergeten wordt altijd om de driver wel in het path op te nemen omdat er geen compileer fouten optreden, vanwege het laden van de drivers middels de string naam.

[ Voor 46% gewijzigd door momania op 04-03-2003 15:15 ]

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


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
momania: Maar vergeten wordt altijd om de driver wel in het path op te nemen omdat er geen compileer fouten optreden, vanwege het laden van de drivers middels de string naam.
Dat zou runtime fouten opleveren, niet compile time. De compiler heeft helemaal geen kennis van die String en het boeit hem eigenlijk niet wat erin staat ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
Heb die .jar file in de jre/lib/ext directory staan van de JRE. Ik werk met Win2k, maar heb geen verstand van het CLASSPATH, heb het wel eens geprobeerd, maar dat werkte niet. Waar en hoe zet ik een classpath dan? Mijn app gaat dus niet op mijn eigen pc draaien, maar bij een ander, dus dan moet bij hem het CLASSPATH ook gezet worden.

  • momania
  • Registratie: Mei 2000
  • Nu online

momania

iPhone 30! Bam!

mbravenboer schreef op 04 March 2003 @ 15:17:
[...]

Dat zou runtime fouten opleveren, niet compile time. De compiler heeft helemaal geen kennis van die String en het boeit hem eigenlijk niet wat erin staat ;) .
Dat bedoel ik eigenlijk ook, was een beetje raar omschreven van me ;)

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


  • momania
  • Registratie: Mei 2000
  • Nu online

momania

iPhone 30! Bam!

Verwijderd schreef op 04 maart 2003 @ 15:20:
Heb die .jar file in de jre/lib/ext directory staan van de JRE. Ik werk met Win2k, maar heb geen verstand van het CLASSPATH, heb het wel eens geprobeerd, maar dat werkte niet. Waar en hoe zet ik een classpath dan? Mijn app gaat dus niet op mijn eigen pc draaien, maar bij een ander, dus dan moet bij hem het CLASSPATH ook gezet worden.
in een dos prompt kan je even 'set classpath' typen om te zien wat er allemaal in je classpath zit.
en met de optie 'java -classpath=xxxxxx' kan je ook classpath aangeven waarbij de '.' (punt) de huidige directory is.

[ Voor 4% gewijzigd door momania op 04-03-2003 15:24 ]

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


Verwijderd

Topicstarter
De app gaat dus als een executable draaien (gemaakt met Microsoft SDK for java 4.0). Heb ook al gezien dat die executable soms met "fouten" komt (hij kent dan de methode "remove" niet van een Vector), maar zover ik weet is "remove" nieuwer dan het oude "removeElement". En dus maakt de executable gebruik van de Microsoft VM en niet van mijn JRE :(

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
De Microsoft VM is totaal geen optie voor een serieuze, beetje moderne, Java applicatie.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
Het is gewoon een chatserver :) Maar het heeft me wel tijd gekost, dus wil het ook draaiende hebben nu....
Of heb je een beter idee dan om de server te runnen? Een dosschermpje met "java Server" 24/7 is ook niets he :(

  • momania
  • Registratie: Mei 2000
  • Nu online

momania

iPhone 30! Bam!

Als je je applicatie makkelijk wilt opstarten zou ik ook eens kijken naar een jar-executable.
Dan kan je gewoon jouw jar-file dubbelclicken en dan start je applicatie, is veel minder omslachtig als via een Microsoft SDK.

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


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ik vermoed dat de MySQL driver helemaal niet draait in een Microsoft VM en dat het probleem daardoor wordt veroorzaakt. Ik denk dat je dit wel kan vinden op de site van de MySQL driver?

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • momania
  • Registratie: Mei 2000
  • Nu online

momania

iPhone 30! Bam!

Verwijderd schreef op 04 March 2003 @ 15:37:
Het is gewoon een chatserver :) Maar het heeft me wel tijd gekost, dus wil het ook draaiende hebben nu....
Of heb je een beter idee dan om de server te runnen? Een dosschermpje met "java Server" 24/7 is ook niets he :(
Kijk dan ook eens naar de javaw.exe ..
of de optie "start java ..bla bla bla..."
dit om het simpel te houden...

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


Verwijderd

bij socksviahttp zit zo een programma'tje bij dat een class opkan starten & een systray icoontje kan genereren. SourceCode zit erbij... Misschien handig?

Verwijderd

Topicstarter
Thnx voor de adviezen...ik zal er vanavond naar kijken :)

Verwijderd

Ik heb het topic niet helemaal gelezen, dus als ik iets irrrelevants uitkraam sorry, maar zoek je dit?
Java:
1
2
3
Class.forName("org.gjt.mm.mysql.Driver ");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost","username","password");
Statement stmt = con.createStatement();

[ Voor 20% gewijzigd door Verwijderd op 04-03-2003 15:48 ]


Verwijderd

Topicstarter
Zoiets heb ik al. Maar ik wil die driver includen in me app en dus niet aanroepen op die manier

Verwijderd

Java:
1
2
3
4
import org.gjt.mm.mysql.Driver;

Driver driver = new Driver();
Conection con = driver.connect("p0", properties);

En wat die properties zijn, geen flauw idee

edit: en vanwege eigen interesse nu wel:
Parameters
url
The URL of the database to connect to
properties
a list of arbitrary string tag/value pairs as connection arguments; normally at least a "user" and "password" property should be included

[ Voor 48% gewijzigd door Verwijderd op 04-03-2003 16:04 ]


Verwijderd

Topicstarter
Ok zal wel wat proberen straks, zit nu op me werk :(

Verwijderd

Het werkt, ik heb het ook even getest...

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
ik weet niet welke mySQL connector gebruikt maar de juiste (nieuwe) driver naam voor de connector is:

com.mysql.jdbc.Driver

maar je kan nog wel die org doen alhoewel die gewoon een ref teruggeeft naar above..

Verwijderd

Oh ik heb hem onlangs nog gedownload, en dat was gewoon een org, en dat vind ik eigelijk maar beter ook. Het is toch niet commercieel...

Verwijderd

Topicstarter
markvleth...het werkte inderdaad. Het includen van die driver in me app ging prima. Maar als ik er een executable van maak gaat er toch wat mis. Dan toch maar de app runnen met javaw :) Bedankt in ieder geval voor je tip :)
Pagina: 1