Avatar billede zombietown Nybegynder
23. marts 2006 - 21:08 Der er 22 kommentarer og
1 løsning

Java til MySql

Hej hej

JEg har oprettet mig en lille database med MySql på min lokale pc, nu vil jeg så gerne tilgå den fra java.

Jeg har installeret ODBC, og en java connector fra www.MySql.com.

Mit lille eksempel.

try{
class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e)
{
System.out.println("com.mysql.jdbc.Driver ikke fundet.");
}

try
{
Connection con = DriverManager.getConnection  ("jdbc:mysql://DB_NAVN", "USER", "PASSWORD");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM TABLE_NAVN");
} catch (SQLException e)
{
System.out.println("ErrorCode " + e.getErrorCode());
System.out.println("SQLState " + e.getSQLState());
System.out.println("SQL fejl.");
}

DB_NAVN, USER, PASSWORD, TABLE_NAVN skal selvfølgelig byttes ud med noget brugbart.

Når det er kørt, får jeg :
ErrorCode 0
SQLState 08001
SQL fejl.

Hvad er der galt ??

- Rasmus
Avatar billede arne_v Ekspert
23. marts 2006 - 21:16 #1
(ODBC er ikke noedvendig for Java)


jdbc:mysql://DB_NAVN

skal nok vaere

jdbc:mysql://SERVER_NAVN/DB_NAVN
Avatar billede arne_v Ekspert
23. marts 2006 - 21:17 #2
System.out.println("message " + e.getMessage());

vil nok fortaelle dig mere
Avatar billede zombietown Nybegynder
23. marts 2006 - 21:19 #3
Hvad er server_navn når det ligger på min egen computer ??
Avatar billede mikkelbm Nybegynder
23. marts 2006 - 21:27 #4
"localhost" ? :)
Avatar billede zombietown Nybegynder
23. marts 2006 - 21:31 #5
Med "jdbc:mysql://localhost/DB_NAVN" får jeg nu

ErrorCode 0
SQLState 08S01
Avatar billede mikkelbm Nybegynder
23. marts 2006 - 21:33 #6
Hedder din database: DB_NAVN ?
Avatar billede zombietown Nybegynder
23. marts 2006 - 21:35 #7
nix, den hedder "crawler_1", det var bare for at lave en mere general beskrivelse.
Avatar billede mikkelbm Nybegynder
23. marts 2006 - 21:35 #8
Og prøv at udskrive fejlen som Arne foreslår.
Avatar billede zombietown Nybegynder
23. marts 2006 - 21:37 #9
Så får jeg.

message Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: java.net.ConnectException: Connection refused: connect

STACKTRACE:

java.net.SocketException: java.net.ConnectException: Connection refused: connect
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:276)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2592)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1509)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    at java.sql.DriverManager.getConnection(DriverManager.java:525)
    at java.sql.DriverManager.getConnection(DriverManager.java:171)
    at webcrawler.CrawlerDB.main(CrawlerDB.java:25)


** END NESTED EXCEPTION **



Last packet sent to the server was 63 ms ago.
Avatar billede mikkelbm Nybegynder
23. marts 2006 - 21:39 #10
Det kan være Arne har nogle forslag til den fejl. Jeg ved ikke om det er fordi den ikke kan finde din databaseserver, eller om det er user + pass der er forkert. Jeg mener bare at man får det at vide hvis password er forkert.
Avatar billede zombietown Nybegynder
23. marts 2006 - 21:43 #11
Jeg er ret ny med det her database halløjsa.

Skal man starte en server aplikation op som så skal køre i baggrunden ??
Avatar billede arne_v Ekspert
23. marts 2006 - 21:43 #12
det ligner enten at MySQL ikke er startet eller at en software firewall
blokerer port 3306
Avatar billede zombietown Nybegynder
23. marts 2006 - 21:45 #13
Hvis jeg skriver mysqladmin ping -u root -p, så siger den at den er levende, så må den vel også være kørende ??
Avatar billede arne_v Ekspert
23. marts 2006 - 21:49 #14
Avatar billede zombietown Nybegynder
23. marts 2006 - 21:56 #15
Jeg har lige installeret 5.0.19 i dag, så det burde ikke være det.

Hvad skal den bruge port 3306 til når det liger på den maskine der skal køre java programmet ??
Avatar billede arne_v Ekspert
23. marts 2006 - 21:58 #16
problemet opstaar netop kun med nye MySQL versioner !

(4.1 og 5.0 har problemet, 3.23 og 4.0 har ikke problemet)

selvom det er paa samme maskine saa bruger JDBC stadig TCP/IP
Avatar billede zombietown Nybegynder
23. marts 2006 - 22:01 #17
ok, jeg har ikke mere tid i aften, men jeg må prøve at se på det i morgen.

Tak for hjælpen ind til videre.

- Rasmus
Avatar billede zombietown Nybegynder
26. marts 2006 - 15:22 #18
Dumme internet der ikke virker når man skal bruge det. Dumme TDC der ikke kan finde udad hvad det fejler. Bande bande svovle svovle.

Godt at få brokket sig lidt.

Så vidt jeg lige kan læse ud fra det der problem med gamle clienter på server 5.0, så er det et pasword problem. Mit user og pasword er "root" "root", så jeg tror ikke jeg bliver ramt af det problem.

Hvordan kan jeg kontrolere om mysql faktisk er kørende på maskinen ??

- Rasmus
Avatar billede zombietown Nybegynder
26. marts 2006 - 15:41 #19
Efter lidt nærmere læsning, så kunne det godt være det, så jeg har opdateret mit password ved at bruge old_password('root'), som så dannede et kortere hash password i mysql.

Efter det får jeg stadig den samme fejl.

ErrorCode 0
SQLState 08S01

- Ramsus
Avatar billede zombietown Nybegynder
26. marts 2006 - 16:19 #20
Som det ser ud nu.

        try
        {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e)
        {
            System.out.println("com.mysql.jdbc.Driver ikke fundet.");
        }
        try
        {
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost/crawler_1", "root", "root");
        } catch (SQLException e)
        {
            System.out.println("ErrorCode " + e.getErrorCode());
            System.out.println("SQLState " + e.getSQLState());
            System.out.println("message " + e.getMessage());
        }


Fejlen som den er nu.

ErrorCode 0
SQLState 08S01
message Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: java.net.ConnectException: Connection refused: connect

STACKTRACE:

java.net.SocketException: java.net.ConnectException: Connection refused: connect
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:276)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2592)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1509)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    at java.sql.DriverManager.getConnection(DriverManager.java:525)
    at java.sql.DriverManager.getConnection(DriverManager.java:171)
    at webcrawler.CrawlerDB.main(CrawlerDB.java:26)


** END NESTED EXCEPTION **
Avatar billede javaisnice Nybegynder
29. marts 2006 - 12:09 #21
tjek om processen mysqld-nt.exe kører i joblisten
Avatar billede zombietown Nybegynder
29. marts 2006 - 12:52 #22
Det gør den.
Avatar billede zombietown Nybegynder
30. marts 2006 - 09:29 #23
Tror ikke der sker mere i denne tråd, så nu lukker jeg den.
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