Springen naar inhoud

Jdbc


  • Log in om te kunnen reageren

#1

In physics I trust

    In physics I trust


  • >5k berichten
  • 7384 berichten
  • Moderator

Geplaatst op 05 april 2011 - 11:13

Hallo,

Ik wilde proberen om (op ubuntu) een msql database aan te sturen vanuit Java. Daarvoor gebruik ik JConnector. Ik denk echter dat het CLASSPATH zetten niet werkt, heeft iemand daar tips voor?
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class JavaMysqlDemo {
  public static void main(String args[]){
	System.out.println("-- Demonstratie gebruik JDBC met MySQL --");
	try {
	  Statement stmt;
	  ResultSet rs;

	  //Laad de benodigde JDBC driver voor MySQL.
	  Class.forName("com.mysql.jdbc.Driver").newInstance();

	  // We gaan er vanuit dat de MySQL-server draait
	  // op de localhost, op standaard poort 3306.
	  String url = "jdbc:mysql://localhost:3306/test";

	  // Maak een verbindingsobject aan
	  Connection con = DriverManager.getConnection(url,"root", "rootpass");

	  //We tonen de gegevens ook nog even:
	  System.out.println("URL: " + url);
	  System.out.println("Connection: " + con);

	  //We maken een statement voor de verbinding aan, voert later een opdracht uit
	  stmt = con.createStatement();


	  // Ter demonstratie maken we een nieuwe tabel aan met naam ep2.
	  stmt.executeUpdate("CREATE TABLE ep2(naam char(32) not null, emailadres char(32) not null)");

	  // Voer een voorbeeld in.
	  stmt.executeUpdate("INSERT INTO ep2(naam, emailadres) VALUES('Elco','elco@ep2.nl')");

	  //We vragen de data op bij de database,
	  //De resultaten komen in resultset rs
	  rs = stmt.executeQuery("SELECT * from ep2");

	  //Haal alle gegevens uit de resultset.
	  System.out.println("De resultaten:");
	  while(rs.next()){
		String naam= rs.getString("naam");
		String emailadres = rs.getString("emailadres");
		System.out.println("\tnaam= " + naam + "\temailadres = " + emailadres);
	  }

	  con.close();
	}catch( Exception e ) {
	  e.printStackTrace();
	}
  }
}

geeft
com.mysql.jdbc.Driver
Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
	at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:186)
	at DBDemo.main(DBDemo.java:22)
"C++ : Where friends have access to your private members." — Gavin Russell Baker.

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 05 april 2011 - 11:44

De error is wat het is, hij vind de juiste klasse niet.
Hoe probeer je het geheel te draaien? Heb je 1 jar gemaakt, of zit het nog in een andere jar? Hoe ziet je manifest eruit?
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-

#3

In physics I trust

    In physics I trust


  • >5k berichten
  • 7384 berichten
  • Moderator

Geplaatst op 05 april 2011 - 23:03

Ik heb de jar die ik van de site (J Connector) heb gedownload, toegevoegd aan de build path. Je moet echter een CLASSPATH zetten, naar een jar (msql.jar). Ik weet niet of dat lukt. Of wat moet ik me voorstellen bij de klasse die hij niet vindt? Uit de manifest:
Name: common



Specification-Title: JDBC



Specification-Version: 4.0



Specification-Vendor: Sun Microsystems Inc.



Implementation-Title: MySQL Connector/J



Implementation-Version: 5.1.15



Implementation-Vendor-Id: com.mysql



Implementation-Vendor: Oracle
"C++ : Where friends have access to your private members." — Gavin Russell Baker.

#4

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 05 april 2011 - 23:16

Je moet echter een CLASSPATH zetten, naar een jar (msql.jar). Ik weet niet of dat lukt. Of wat moet ik me voorstellen bij de klasse die hij niet vindt? Uit de manifest:

De applicatie die jij maakt, draai je die als een .class, of als een .jar?
In het eerste geval, moet je aan je java-commando de parameter classpath toevoegen.

Dus:
java MyClass.class
wordt
java -cp MyLibFolder/MyLib.jar MyClass.class

In het geval je een .jar maakt, moet je in de manifest van je .jar je classpath aanpassen.
Dus
Manifest-Version: 1.0
Created-By: 1.6.0 (in fysics I trust)
Wordt
Manifest-Version: 1.0
Class-Path: MyLibFolder/MyLib.jar
Created-By: 1.6.0 (in fysics I trust)


Je kan ook je windows-variabele classpath aanpassen, maar dat zou ik niet doen. Het is nogal een vuile oplossing, en werkt slechts op 1 computer.
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-

#5

In physics I trust

    In physics I trust


  • >5k berichten
  • 7384 berichten
  • Moderator

Geplaatst op 05 april 2011 - 23:34

Voorlopig zit ik nog in Eclipse, verder heb ik van het .java bestand een .jar bestand gemaakt, dat ik mytry.jar heb genoemd en executabel zou moeten zijn.

Daarin zit nu: mysql-connector-java-5.1.15-bin.jar; JavaMysqlDemo.class; daarin zit de code waarmee ik verbinding zou moeten maken en een manifest met

Manifest-Version: 1.0
Class-Path: mytry_lib/mysql.jar
Main-Class: JavaMysqlDemo

"C++ : Where friends have access to your private members." — Gavin Russell Baker.

#6

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 07 april 2011 - 13:21

Voorlopig zit ik nog in Eclipse, verder heb ik van het .java bestand een .jar bestand gemaakt, dat ik mytry.jar heb genoemd en executabel zou moeten zijn.

Daarin zit nu: mysql-connector-java-5.1.15-bin.jar; JavaMysqlDemo.class; daarin zit de code waarmee ik verbinding zou moeten maken en een manifest met

Ah, ik plaats meestal mijn bibliotheek jars buiten mijn hoofdjar.

Als je ze er in wilt plaatsen, moet je de bibliotheek unzippen en vervolgens de ge-unzipte files meenemen in je jar. Anders vindt hij ze inderdaad niet. Zie: http://stackoverflow...to-one-jar-file

Maar als het is om te testdraaien binnen Eclipse, is er een andere manier. Zie: http://wiki.eclipse......7s_classpath?
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-

#7

In physics I trust

    In physics I trust


  • >5k berichten
  • 7384 berichten
  • Moderator

Geplaatst op 07 april 2011 - 20:00

Dan zal er meer aan de hand zijn, want dat had ik reeds gedaan...

Ik laat wel weten als ik het heb gevonden!
"C++ : Where friends have access to your private members." — Gavin Russell Baker.





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures