Java + MySQL połączenie

0

Witam,
mam taki problem nie mogę połączyć się z bazą danych. Nigdy wcześniej nie miałem okazji robić w javie czegoś z MYSQL wiec przepraszam za głupie pytania. Szukałem informacji na ten temat w necie i próbowałem na 4 różne sposoby i żaden nie zadziałał. Najbliższy sukcesu był chyba ten kawałek kodu, ponieważ jako jedyny kompiluje się bez błędu. Tyle tylko, że cały czas wyświetla mi komunikat Cannot connect to database server. Dodam, że serwer jest uruchomiony i baza działa. Co w takim razie robię nie tak? Proszę o porady i wskazówki.

import java.sql.Connection;
import java.sql.DriverManager;


public class BazaDanych
{
    public static void main (String[] args)
    {
        Connection conn = null;

        try
        {
            String userName = "root";
            String password = "szymon";
            String sterownik = "com.mysql.jdbc.Drive";
            String url = "jdbc:mysql://localhost/baza";
            Class.forName (sterownik);
            conn = DriverManager.getConnection (url, userName, password);
            System.out.println ("Database connection established");
        }
        catch (Exception e)
        {
            System.err.println ("Cannot connect to database server");
        }
        finally
        {
            if (conn != null)
            {
                try
                {
                    conn.close ();
                    System.out.println ("Database connection terminated");
                }
                catch (Exception e) { /* ignore close errors */ }
            }
        }
    }
}

 
0

w sterowniku brakuje 'r' na końcu, powinno być:

 String sterownik = "com.mysql.jdbc.Driver";
0

"r" poprawione ale dalej nie chce działać :-(

0

Nie ma to jak złapać wyjątek i wypisać nic nie mówiący komunikat... wypisz chociaż stacktrace
Spróbuj dodać import com.mysql.jdbc.Driver;

0

Ten kod znalazłem w internecie wpisałem tylko dane potrzebne do zalogowania do bazy danych. Chciałem zrobić tak jak mówiłeś z tym importem niestety w standardowych bibliotekach tego nie miałem więc zacząłem szukać i pobrałem z tej strony http://dev.mysql.com/downloads/connector/j/5.0.html co trzeba. W projekcie zrobiłem osobną paczkę com.mysql.jdbc i tam wrzuciłem wszytko to co pobrałem teraz już mogłem zrobić importa tylko nie mogłem skompilować bo w paczce com.mysql.jdbc są ciągle błędy z jakimś interfejsem :-( myślałem, że to będzie łatwiejsze :-(

0

Do projektu wystarczy dodać tą bibliotekę, nie musisz jej kompilować i wyczyniać innych cudów. Poczytaj dokumentację tego sterownika.

0

Musisz ściągnąć sobie konektora mysql. Ja np. testowałem na mysql-connector-java-5.0.5.jar

Potem uruchamiając program musisz tego konektora dodadać do classpath'a.
Np:

java -classpath .;mysql-connector-java-5.0.5.jar BazaDanych 
0

Może brakuje portu?

Spróbuj coś takiego:

	String IP = "127.0.0.1";
	String PORT = "3306";
	String DATABASE = "nazwa_bazy";
	String USERNAME = "nazwa_uzytkownika";
	String PASS = "haslo_uzytkownika";

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection polaczenie = DriverManager.getConnection("jdbc:mysql://"+IP+":"+PORT+"/"+DATABASE, USERNAME, PASS);
JOptionPane.showMessageDialog(okno, "Połączenie z  bazą danych aktywne!");
catch (Exception e) {
	JOptionPane.showMessageDialog(okno, "DATABASE ERROR: Błąd przy połączeniu z bazą danych!");
	e.printStackTrace();
}

Mi w połączeniu z WAMP-MySQL coś takiego działało. Oczywiście biblioteka Connector/J (@up) ale tą zakładam masz.

0

Temat odgrzebuję...

Mam ten sam problem - podobny kod miałem, zmieniłem nawet na powyższy(z pierwszego posta +"r") i nie mogę się połączyć z bazą danych.
Zaczynając od początku, może to komuś coś więcej powie:

  • baza stoi na Krasnalu
  • pracuje w NetBeansie (tworząc DesktopAplication + Database Aplication) mam ścieżkę i port taki jak w moim kodzie, login i haslo też - tam sie mozna polaczyc, czytac z bazy, zapisywac - full wypas :D )
  • pobralem tego connectora 5.0.8 w widoku mojego projektu w katalogu Libraries mam go ladnie wczytanego ze wszystkimi klasami - zero błędów w kodzie.
  • odpalam projekt i klapa... co do obsługiwanych wyjątków:
  • nie chodzi o brak biblioteki/Klasy
  • chodzi o samo połączenie
 catch (SQLException e)
        {
            System.out.println(e.getClass());
        }

zwraca:

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException

a e.getMessage() - Something is wrong in your syntax obok 'SESSION VARIABLES' w linii 1

Kod całości:

 package epocztex2;

import java.sql.Connection;
import java.sql.DriverManager;
import com.mysql.jdbc.*;
import java.sql.SQLException;
 
 
public class BazaDanych
{
    public BazaDanych() throws ClassNotFoundException{
        Connection conn = null;
 
        try
        {
            String userName = "root";
            String password = "krasnal";
            String sterownik = "com.mysql.jdbc.Driver";
            String url = "jdbc:mysql://localhost:3306/epocztex";
            Class.forName (sterownik);
            conn = DriverManager.getConnection (url, userName, password);
            System.out.println ("Database connection established");
        }
        catch (SQLException e)
        {
            System.out.println(e.getMessage());
        }
        finally
        {
            if (conn != null)
            {
                try
                {
                    conn.close ();
                    System.out.println ("Database connection terminated");
                }
                catch (Exception e) { /* ignore close errors */ }
            }
        }
    }
}

Ktoś ma jakiś pomysł, bo ja już wysiadam... ;/

0

Ja mam taki pomysł, że pokaż wywołanie SQL do bazy, bo błąd mi mówi, że "Something is wrong" ze składnią.

0

jeszcze stackTrace...

run:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Something is wrong in your syntax obok 'SESSION VARIABLES' w linii 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3277)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3206)
at com.mysql.jdbc.Statement.executeQuery(Statement.java:1232)
at com.mysql.jdbc.Connection.loadServerVariables(Connection.java:4478)
at com.mysql.jdbc.Connection.initializePropsFromServer(Connection.java:4062)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2789)
at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at epocztex2.BazaDanych.<init>(BazaDanych.java:21)
at epocztex2.Epocztex2View.<init>(Epocztex2View.java:24)
at epocztex2.Epocztex2App.startup(Epocztex2App.java:19)
at org.jdesktop.application.Application$1.run(Application.java:171)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

chodnik: jeśli chodzi Ci o jakieś kwerendy to nie mam żadnych, póki co próbuję się połączyć ;/

0

Wydaje mi się że problemem może być Krasnal - z tego co pamiętam to tam jest MySQL w wersji 3.0....

0

Hm... moze, spróbuję w koncu nic nie trace :D A jaką wersje doinstalować, żeby współdziałało z connectorem - czy inaczej, ktos kto nie mial problemów z połączeniem się, jakiego MySQL miał zainstalowanego? ;)

0

Najnowsza wersja MySQL to 5.5, a najnowszy connector to 5.1.18 (http://dev.mysql.com/downloads/connector/j/)

0

Zainstalowałem MySQL'a 5.0.92 do tego conectora starszego 5.0.8 (?) i... DZIAŁA !!
Dzięki wielkie Marcin!

1 użytkowników online, w tym zalogowanych: 0, gości: 1