1 van 1

Jdbc

Geplaatst: di 05 apr 2011, 12:13
door In physics I trust
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?

Code: Selecteer alles

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

Code: Selecteer alles

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)

Re: Jdbc

Geplaatst: di 05 apr 2011, 12:44
door 317070
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?

Re: Jdbc

Geplaatst: wo 06 apr 2011, 00:03
door In physics I trust
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:

Code: Selecteer alles

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

Re: Jdbc

Geplaatst: wo 06 apr 2011, 00:16
door 317070
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.

Re: Jdbc

Geplaatst: wo 06 apr 2011, 00:34
door In physics I trust
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

Re: Jdbc

Geplaatst: do 07 apr 2011, 14:21
door 317070
In fysics I trust schreef: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.com/questions/81260/j...to-one-jar-file

Maar als het is om te testdraaien binnen Eclipse, is er een andere manier. Zie: http://wiki.eclipse.org/FAQ_How_do_I_add_a...7s_classpath%3F

Re: Jdbc

Geplaatst: do 07 apr 2011, 21:00
door In physics I trust
Dan zal er meer aan de hand zijn, want dat had ik reeds gedaan...

Ik laat wel weten als ik het heb gevonden!