Java+MySQL=JDBC problém – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Java+MySQL=JDBC problém – Java – Fórum – Programujte.comJava+MySQL=JDBC problém – Java – Fórum – Programujte.com

 

Javac
~ Anonymní uživatel
6 příspěvků
7. 9. 2008   #1
-
0
-

Ahoj lidi![seznam]
Skušam rozchodiť JDBC a narazil som na problém. Pripájam sa na databázu servera webzdarma.cz :



String serverURL=new String("jdbc:mysql://mysql.webzdarma.cz:3306/databaza");
meno="meno";
heslo="***";
try {
Class.forName("com.mysql.jdbc.Driver");
Connection spojenie=DriverManager.getConnection(serverURL,meno,heslo);
spojenie.close();
} catch (Exception e1) {
e1.printStackTrace();
}


Vypisuje to chybu:

com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: Connection reset by peer: connect

STACKTRACE:

java.net.SocketException: Connection reset by peer: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:271)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2771)
at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at instalacia_redakcneho_systemu_RD$uvod_vytvorenie_spojenia.actionPerformed(instalacia_redakcneho_systemu_RD.java:79)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)


** END NESTED EXCEPTION **



Last packet sent to the server was 0 ms ago.
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2847)
at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at instalacia_redakcneho_systemu_RD$uvod_vytvorenie_spojenia.actionPerformed(instalacia_redakcneho_systemu_RD.java:79)
at javax.swing.AbstractButton.fire[/seznam]ActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)


Budem vďačný za akúkoľvek radu.

Nahlásit jako SPAM
IP: 62.168.75.–
KIIV
~ Moderátor
+43
God of flame
7. 9. 2008   #2
-
0
-

CONNECTION RESET BY PEER .. co to asi znamena? :smile19:

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Mihulik0
Návštěvník
7. 9. 2008   #3
-
0
-

Javac napsal:
Ahoj lidi![seznam]
Skušam rozchodiť JDBC a narazil som na problém. Pripájam sa na databázu servera webzdarma.cz :



String serverURL=new String("jdbc:mysql://mysql.webzdarma.cz:3306/databaza");
meno="meno";
heslo="***";
try {
Class.forName("com.mysql.jdbc.Driver");
Connection spojenie=DriverManager.getConnection(serverURL,meno,heslo);
spojenie.close();
} catch (Exception e1) {
e1.printStackTrace();
}


Vypisuje to chybu:

com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: Connection reset by peer: connect

STACKTRACE:

java.net.SocketException: Connection reset by peer: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:271)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2771)
at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at instalacia_redakcneho_systemu_RD$uvod_vytvorenie_spojenia.actionPerformed(instalacia_redakcneho_systemu_RD.java:79)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)


** END NESTED EXCEPTION **



Last packet sent to the server was 0 ms ago.
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2847)
at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at instalacia_redakcneho_systemu_RD$uvod_vytvorenie_spojenia.actionPerformed(instalacia_redakcneho_systemu_RD.java:79)
at javax.swing.AbstractButton.fire[/seznam]ActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)


Budem vďačný za akúkoľvek radu.



Sice se to přímo netýká otázky, ale hodně to pomůže a vřele doporučuji...
použití zápisu:
try{
}catch(...){
ex.printStackTrace();
}
není zrovna nejlepší řešení. Sice je to samozřejmě lepší než úplné spolknutí výjimky (catch(...){}), ale nemá to k tomu daleko. Pokud nevíš jak na výjimku reagovat, tak ji nech propadnout výše! Zápis ex.printStackTrace(); není v 90% případů dostatečné ošetření výjimky!
Jedna z nejhorších, ale bohužel nejfrekventovanějších, chyb, které se v Javě dělají!

Edit: Ještě jedna rada ke tvému kódu...
Uzavírání externích zdrojů by mělo být vždy umístěno ve finally bloku, aby nemohl dojít ke špatnému uzavření prostředků!
tzn. kód by měl spíše nějak vypadat takhle:
try {
Class.forName("com.mysql.jdbc.Driver");
Connection spojenie=DriverManager.getConnection(serverURL,meno,heslo);
} catch (Exception e1) {
//místo catch bloku zde spíše nechat výjimku propadnout výše!
} finally{
if(spojenie != null){
spojenie.close();
}
}

Nahlásit jako SPAM
IP: 85.13.98.–
stepan0
Newbie
7. 9. 2008   #4
-
0
-

Spojení bylo ukončeno... důvod nalezneš na stránce http://www.webzdarma.cz/pp.html?2#7. Na databázi je možné se připojit pouze ze serveru webzdarma.cz. Protože je příklad v Javě (kterou webzdarma.cz nepodporuje), přepokládám, že se připojuješ odjinud.

Nahlásit jako SPAM
IP: 213.192.60.–
javax
~ Anonymní uživatel
3 příspěvky
7. 9. 2008   #5
-
0
-

To Mihulik : Diky za radu. S tym finall mám menšie problémy, preto to aj nepoužívam tak často. Tvoj kód mi tiež vypisuje chybu. Premennú spojenie si uzavrel do bloku a z iného bloku kam nemá dosah sa snažíš vyvolať jej metódu close(); . Napíš mi pls ten kód tak aby fungoval.
To stepan : Díky moc. Vyriešil si mi moj problém.

Nahlásit jako SPAM
IP: 62.168.75.–
Mihulik0
Návštěvník
7. 9. 2008   #6
-
0
-

javax napsal:
To Mihulik : Diky za radu. S tym finall mám menšie problémy, preto to aj nepoužívam tak často. Tvoj kód mi tiež vypisuje chybu. Premennú spojenie si uzavrel do bloku a z iného bloku kam nemá dosah sa snažíš vyvolať jej metódu close(); . Napíš mi pls ten kód tak aby fungoval.


Jinak stačí si nastudovat obory platností proměnných (řekl bych že je to ovšem absolutní základ...)...
Př.
try{
String text="Tak tohle je zrovna špatný příklad...";
}finally{
System.out.println(text);
}

je samozřejmě špatně, jelikož v oboru platnosti bloku finally žádná proměná s identifikátorem text neexistuje...správné řešení by bylo:

...{
String text=null;
try{
text="Tak tohle je naopak správný příklad!";
}finally{
System.out.println(text);
}
}


Doufám že tohle nakopnutí stačí (i tak ale doporučuji vrátit se k základům, než se snažit programovat připojení k databázi...nic ve zlém), pokud ne, tak hold...

Nahlásit jako SPAM
IP: 85.13.98.–
javac
~ Anonymní uživatel
6 příspěvků
8. 9. 2008   #7
-
0
-

To Mihulik : Neexistuje lepšie riešenie? V mojom prípade to vypísalo java.lang.NullPointerException. Čo tak spojenie.close() dat do bloku try? Pokial nastane chyba pri inicializácii spojenia tak sa neinicializuje a nebude ho treba zavriet. :)

Doufám že tohle nakopnutí stačí (i tak ale doporučuji vrátit se k základům, než se snažit programovat připojení k databázi...nic ve zlém), pokud ne, tak hold...


Netvorím perfektný kód, ale takéto lahké programy zvládnem.

To ALL: Neviete poradit nejaký free webhosting, ktorý má databázu prístupnú aj z iných serverov? Díky.

Nahlásit jako SPAM
IP: 62.168.75.–
Mihulik0
Návštěvník
8. 9. 2008   #8
-
0
-

javac napsal:
To Mihulik : Neexistuje lepšie riešenie? V mojom prípade to vypísalo java.lang.NullPointerException. Čo tak spojenie.close() dat do bloku try? Pokial nastane chyba pri inicializácii spojenia tak sa neinicializuje a nebude ho treba zavriet. :)

Doufám že tohle nakopnutí stačí (i tak ale doporučuji vrátit se k základům, než se snažit programovat připojení k databázi...nic ve zlém), pokud ne, tak hold...


Netvorím perfektný kód, ale takéto lahké programy zvládnem.

To ALL: Neviete poradit nejaký free webhosting, ktorý má databázu prístupnú aj z iných serverov? Díky.



Co ti vypisuje java.lang.NullPointerException? Kde ti to vypisuje?...bez dostatečných vstupních dat nemůžeš očekávat patřičný výstup;-)...
Dát volání metody close() do bloku try? Pochypuji že jsi schopen ji ošetřit v této metodě...................................ale tohle všechno už jsem ti psal...

BTW: Začínám mít pocit, že chceš, abych tě (či někdo jiný) vodil za ručičku...to ode mne ovšem neočekávej...

Nahlásit jako SPAM
IP: 85.13.98.–
javac
~ Anonymní uživatel
6 příspěvků
8. 9. 2008   #9
-
0
-

To Mihulik :

bez dostatečných vstupních dat nemůžeš očekávat patřičný výstup

Mám dostatok vstupných údajov. Problém je že nie sú správne. A práve toto sa snažím ošetriť.

Dát volání metody close() do bloku try? Pochypuji že jsi schopen ji ošetřit v této metodě

Pred chvílou som ti písal že túto metódu netreba. Ach..

BTW: Začínám mít pocit, že chceš, abych tě (či někdo jiný) vodil za ručičku...to ode mne ovšem neočekávej...


Nič také nečakám. Len som konečne narazil na programátora v jave a tak si chcem zopár vecí overiť.

Co ti vypisuje java.lang.NullPointerException? Kde ti to vypisuje?

Vypisuje mi to v bloku finally čo je pochopitelné keďže sa premenná spojenie neinicializuje príčinou nesprávnych dát. Ale to som už písal....

Nahlásit jako SPAM
IP: 62.168.75.–
Mihulik0
Návštěvník
8. 9. 2008   #10
-
0
-

Mám pocit, že se asi zle chápeme...no nevadí:)

Tady je pseudo metoda, která ti snad shrne to, o co se tady celou dobu hádáme:)

private void ukazka() throws ...{
TypSpojeni spojeni=null;
try{
spojeni=...;
...
}finally{
if(spojeni != null){
spojeni.close();
}
}
}



Doufám že už je to takhle lepší:)


BTW: TO s těma vstupníma datama jsi špatně pochopil. Myslel jsem to tak, že když nedostatečně popíšeš problém, tak nemůžeš čekat užitečnou odpověď:)

Nahlásit jako SPAM
IP: 85.13.98.–
stepan0
Newbie
8. 9. 2008   #11
-
0
-

Connection con;

try {
//ziskani connection z driveru nebo jeste lepe z data poolu
con = DriverManager.getConnection(serverURL,meno,heslo);
} catch (SQLException se) {
//zachyceni vyjimky (napr. zalogovani, setovani promennych apod.)
} finally {
//uzavreni konekce (je mozne zabalit jeste do TRY CATCH bloku)
if (con != con)
con.close();
}
Zdroje ke studiu:
[CZ] JDBC a síťová komunikace - skripta http://webdev.felk.cvut.cz/courses/X36PJV/cviceni/cviceni06
[EN] Java tutorial JDBC http://java.sun.com/docs/books/tutorial/jdbc/overview/index.html

(Stále s něčím začínám, takže mám trpělivost :-) ale nauč se používat Google, ušetří ti to spoustu času. Taky se naučíš jak postupovat, pokud ti nikdo není schopen poradit na českém fóru - pokud se chceš programováním živit na profesionální úrovni, tak tě to potká.)

Nahlásit jako SPAM
IP: 85.71.61.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

Podobná vlákna

JDBC a JAVA — založil Lumpik

JDBC driver pre MySQL — založil vlado0991

Java a mysql — založil matus

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý