Avatar billede morten-hbm Nybegynder
25. august 2005 - 19:05 Der er 14 kommentarer og
1 løsning

MySQL til Java via JBDC

Hej

Jeg er i gang med at lege med java, jeg vil nu trække noget ud fra min MySQL server.

Jeg har pt. denne kode:

import java.sql.*;

public class MySQLTest {
    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost/2dlive", "", "");
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM spiller");
        while(rs.next()) {
            int navn = rs.getInt(2);
            String efternavn = rs.getString(3);
            System.out.println(navn + " " + efternavn);
        }
    }
}

Men når jeg køre det, får jeg det her:

Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at MySQLTest.main(MySQLTest.java:5)


Hvad er det jeg laver af fejl?
Avatar billede arne_v Ekspert
25. august 2005 - 19:19 #1
du mangler at placerere MySQL JDBC driver jar filen i din classpath
Avatar billede arne_v Ekspert
25. august 2005 - 19:20 #2
hvis du ikke har hentet den så er det herfra

http://dev.mysql.com/downloads/connector/j/3.1.html
Avatar billede morten-hbm Nybegynder
25. august 2005 - 19:22 #3
C:\Documents and Settings\Cansado>java -classpath .;C:\C:\Programmer\MySQL\mysql
-connector-java-3.0.17-ga-bin.jar C:\Programmer\eclipse\eclipse.exe
Exception in thread "main" java.lang.NoClassDefFoundError: C:\Programmer\eclipse
\eclipse/exe

Synes ikke den sidste linje ser rigtig ud?
Avatar billede arne_v Ekspert
25. august 2005 - 19:25 #4
nix

java -classpath dir1;dir2;jar1;jar2 pakke.Klasse
Avatar billede morten-hbm Nybegynder
25. august 2005 - 19:27 #5
Hvad mener du med pakke.Klasse?
Avatar billede arne_v Ekspert
25. august 2005 - 19:30 #6
i dit tilfælde bare MySQLTest
Avatar billede arne_v Ekspert
25. august 2005 - 19:30 #7
java -classpath .;C:\C:\Programmer\MySQL\mysql-connector-java-3.0.17-ga-bin.jar MySQLTest
Avatar billede arne_v Ekspert
25. august 2005 - 19:31 #8
men det ser jo ud som om du bruger Eclipse

hvis du tilføjer MySQL jar filen til projektets classpath så kan du også
køre programmet inde fra Eclipse
Avatar billede morten-hbm Nybegynder
25. august 2005 - 19:40 #9
Okay, det virker nu, men det ser ikke ud til at jeg kan hente fra feltet "efternavn"

import java.sql.*;

public class MySQLTest {
    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost/2dlive", "bruger", "pass");
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM spiller");
        while(rs.next()) {
            int navn = rs.getInt(1);
            String efternavn = rs.getString(2);
            System.out.println(navn + " " + efternavn);
        }
    }
}


DB'en:
felter: id, navn, efternavn
data: 2, Morten, Knudsen


Men når jeg har vil hente fra navn og efter navn får jeg fejl, men ikke når jeg henter fra id og navn.

Exception in thread "main" java.sql.SQLException: Invalid value for getInt() - 'Morten'
    at com.mysql.jdbc.ResultSet.getInt(ResultSet.java:2330)
    at MySQLTest.main(MySQLTest.java:10)
Avatar billede arne_v Ekspert
25. august 2005 - 20:00 #10
husk at argumentet til getXxxx skal matche kolonne nummeret og Xxxx skal matche
datatypen
Avatar billede arne_v Ekspert
25. august 2005 - 20:01 #11
int id = rs.getInt(1);
            String navn = rs.getString(2);
            String efternavn = rs.getString(3);

lyder rigtigt
Avatar billede morten-hbm Nybegynder
25. august 2005 - 20:03 #12
Ohh ja okay, nu er jeg med, Mange tak for hjælpen :)

Smider du lige et svar? :)
Avatar billede arne_v Ekspert
25. august 2005 - 20:06 #13
kommer her
Avatar billede arne_v Ekspert
25. august 2005 - 20:06 #14
du kan iøvrigt også bruge

getXxxx("kolonnenavn")

men brug af kolonne nr er standard med JDBC
Avatar billede morten-hbm Nybegynder
25. august 2005 - 20:17 #15
Okay, takker
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