[Java/MySQL] Jak połączyć się z bazą danych?

0

Witam, czytam dokumentację Javy odnośnie baz danych i utknąłem zaraz na początku. Mam taki kod:

import java.sql.*;
import javax.sql.*;
import java.util.*;

public class Test {
    public static void main(String[] args) {
        Connection con = null;
        try {
            con = DriverManager.getConnection("jdbc:mysql://localhost/", "root", "root");
        } catch(SQLException exc) {
            System.out.println(exc.getErrorCode() +": "+ exc.getMessage());
        } finally {
            if(con != null) {
                try {
                    con.close();
                } catch(SQLException exc) {
                    
                }
            }
        }
    }
}

Wg. dokumentacji to wystarczy żeby się połączyć z bazą danych zainstalowaną lokalnie na komputerze. Baza danych na pewno działa i jest wszystko prawidłowo skonfigurowane bo wykorzystuję ją w PHP i działa bez zarzutu. Tylko za cholerę nie wiem czemu nie mogę się połączyć z bazą z poziomu Javy. Wyjątek zawiera taki komunikat: "No suitable driver found for jdbc//localhost/".
Co robię nie tak?
Pozdrawiam

0

Witaj, Twój problem (moin skromnym zdaniem) wynika stąd że Java wymaga drivera do bazy danych, ja osobiście używam NetBeansa i tam mam pare driverów w pakiecie ale np do MS SQL musiałem już ściągać. Mam nadzieje że sie nie myle :)

0
  1. do classpatha dorzucasz jara ze sterownikiem.
  2. dajesz:
Class.forName(tunazwasterownika);

przykład chociażby tu: http://www.developer.com/java/data/article.php/3417381 na dole masz pełen kod

0

Dodaj to na początku i powinno grać.

Connection con = null;
        try {
con = DriverManager.getConnection("jdbc:mysql://localhost/", "root", "root");
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
} catch(SQLException exc) {
            System.out.println(exc.getErrorCode() +": "+ exc.getMessage());
        }
0

Sora lekko poprawione:

mkwawa napisał(a)

Dodaj to na początku i powinno grać.

Connection con = null;
try {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
con = DriverManager.getConnection("jdbc//localhost/", "root", "root");
} catch(SQLException exc) {
System.out.println(exc.getErrorCode() +": "+ exc.getMessage());
}

0

Spróbowałem zarówno z
Class.forName("com.mysql.jdbc.Driver");
jak i z
DriverManager.registerDriver(new com.mysql.jdbc.Driver());

W pierwszym przypadku dostaję wyjątek "ClassNotFoundException" a w drugim w ogóle się nie kompiluje i zwraca komunikat: "package com.mysql does not exist DriverManager.registerDriver(new com.mysql.jdbc.Driver());".

Co jeszcze może być nie tak? Może coś w konfiguracji NetBeans, bo właśnie jego używam.

Rozumiem całą koncepcję dołączania sterownika bazy danych ale zastanawia mnie jedno. Nawet jeśli by to działało to czy podczas kompilacji sterownik zostanie pobrany ze strony mysql'a i później każdorazowe uruchomienie programu nie będzie już wymagało połączenia z internetem? Czy może przy każdym uruchomieniu pobierany jest pakiet ze strony i wymagane jest połączenie z internetem?
Zapewne ta druga wersja ale chciałbym się upewnić i wtedy prawdopodobnie trzeba dołączyć sterownik do projektu żeby nie był za każdym razem pobierany?

0

chymm masz chłopie szczęście mój ostatni temat w tej sprawie poleciał do kosza że niby było już tyle razy i że regulamin naruszam i w ogóle zdenerwowałem się straszliwie zainstalowałem IDE i problem się rozwiązał :
http://www.linux.com.pl/forum/index.php?t=msg&th=43852&start=0&rid=1886&S=8af9fb04e77f4b717dad4794a7427aba
pełen opis powyżej musi działać.

0

Dzięki wielkie, faktycznie działa. Jednak jest małe "ale". To rozwiązanie nie jest idealne... jeśli teraz chcę komuś dać napisany przeze mnie program to musi ta osoba wrzucać do katalogu z jvm plik JAR MySQL Connector'a a nie każdy będzie to potrafił. Można by wszystko wrzucić do jednego pliku JAR?

I nadal nie rozumiem czemu nie działa standardowy sposób łączenia z bazą MySQL bez Connectora? Np. jakim cudem po dołączeniu Connectora ta linijka Class.forName("com.mysql.jdbc.Driver"); działa skoro sterownik (Connector to sterownik?) Znajduje się teraz na dysku? Dziwne to wszystko...

0

Nie tyle co do jednego pliku jar co przesyłasz katalog w którym masz:
plik.jar
\lib
-sterownik.jar

W plik.jar w manifeście umieszczasz flagę Class-Path: ./lib/sterownik.jar

W momencie uruchamiania aplikacji JVM zaczyta sobie konfigurację CP z manifestu i będziesz miał taki sam efekt jak w przypadku wrzucenia do lib/ JVMa

0

Ok już sobie poradziłem, prawie tak jak powiedział Koziołek. Tyle, że w NetBeans mogę to zrobić z poziomu programu, czyli dorzucam odpowiednią bibliotekę do projektu i po skompliowaniu mam wszystko w jednym folderze. I przy okazji zauważyłem, że w NetBeans jest już sterownik MySQL trzeba go tylko wybrać z listy. Tak więc problem z głowy. Przydałoby się to wrzucić do jakiegoś FAQ, bo wydaje mi się, że każdy kto się zetknie z Javą na dłużej, prędzej czy później o to zapyta. A odnaleźć jakieś info o tym jest na prawdę ciężko.
Dzięki jeszcze raz wielkie wszystkim za pomoc.
Pozdrawiam

0

@jagi, będzie opis. Tylko potrzebuję trochę czasu.

0

Spoko, nie pali się :) Ważne, że są ludzie którzy chcą jeszcze pomagać innym. Może sam przygotuje coś takiego w wolnej chwili.
Pozdrawiam

0

panowie nie bardzo wiem co tu jeszcze opisywać [???]
Wszystko jest bardzo ładnie opisane w linku który podałem.
Pashimito na prawdę się postarał tłumacząc w czym rzecz nawet przykładowy kod jest.
No może ze dwa słowa dorzucić w jaki sposób wrzucić sterownik i wszystkie klasy które napisaliśmy w jedna paczkę i moim zdaniem starczy.

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