NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 3 - Databáze v Java JDBC - Výpis dat a parametry

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Odpovídá na Filip Něnička
Petr Štechmüller:14.10.2019 19:19

Tak mám pro tebe novniku: to co chceš, nelze aplikovat. Metody setString() + další takové slouží pouze pro nastavování hodnot do sloupečků.

Zde je o tom delší povídání.

You can't. You need to contruct the sql with string concatenation/pla­ceholder with String.format. prepared statement is for the column values not for table name.

Odpovědět
+1
14.10.2019 19:19
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Ondrej Mejzlik:3.11.2019 18:51

Ahoj, skoro celý den jsem se s trápil, prvně aby NetBeans viděl a mohl zasahovat do databáze MySQL a potom, aby se k databázi připojila třída. Pořád mi to házelo chyby, jako že není definovaný "server time zone" nebo naopak, že jsou víc jak jeden... Nakonec jsem to nějak rozchodil, tak to třeba někomu pomůže a nebo mi naopak napíšete, že to jde i jinak :-)

Databázi se mi povedlo připojit, až když jsem v sekci Services / Databases / Drivers / MySQL(Connector/j driver) do JDBC ULR doplnil:

jdbc:mysql://lo­calhost:3306/mys­ql?zeroDateTi­meBehavior=con­vertToNull

V rámci samotné třídy mi to začalo načítat hodnoty z databáze, až když jsem modifikoval řetězen na:

Connection spojeni = DriverManager­.getConnection("jdbc:mys­ql://localhos­t/slovnicek_db?u­seJDBCComplian­tTimezoneShif­t=true&useLega­cyDatetimeCode=fal­se&serverTime­zone=UTC&user=ro­ot&password=HES­LO");

Tak třeba to někomu pomůže :-)

Editováno 3.11.2019 18:52
 
Odpovědět
3.11.2019 18:51
Avatar
Jan Křížek:26.10.2021 19:01

Za mě vše v pohodě :)

 
Odpovědět
26.10.2021 19:01
Avatar
TomL
Člen
Avatar
TomL:17.2.2022 0:20

Při vytváření připojení vyberu driver (mysql-connector-java-8.0.28), ještě před dokončením konfigurace spojení otestuji (Test connection -> Connection succeeded). Pak přímo na vytvořené připojení zkusím SQL dotaz (ten, který je v programu: SELECT * FROM slovo), ukáže mi obsah tabulky a při spuštění programu:

Chyba při komunikaci s databází

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/slovnicek_db?user=root&password=root
        at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:706)
        at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:252)
        at cz.itnetwork.slovnicek.Slovnicek.main(Slovnicek.java:20)

Při debug to skočí z Connection spojeni (první řádek v resources u bloku try) na zachycení chyby. Chápu, že to nenašlo vhodný driver pro připojení, ale vyzkoušel jsem JDK17 a zulu 8.0.322+6, potom ještě stáhnul starší connector (ten ale neprošel testem spojení při úvodní konfiguraci spojení), teď jsem ještě zkusil JDK 11, ale pořád stejný výsledek. Vidíte prosím někde chybu?

 
Odpovědět
17.2.2022 0:20
Avatar
TomL
Člen
Avatar
Odpovídá na TomL
TomL:17.2.2022 0:42

Na začátku lekce jsem nebyl schopen najít záložku 'Library' v 'Properties' projektu (jsem v MacOS 12.0.1 a NetBeans IDE 12.6) - jen co je na obrázku. Našel jsem někde na webu, že lze knihovny přidat v NetBeans přes Tools -> Libraries, kde jsem dal 'New Library...', vytvořil název 'MySQL JDBC Driver' a pak k němu přidal už zmíněný 'mysql-connector-java-8.0.28'. Takže chápu, že chyba bude evidentně v tomto kroku - proto prosím o radu, zda víte, jak přidat tu knihovnu k projektu? (způsob z tutorialu mi nejde zrealizovat :-( )

 
Odpovědět
+1
17.2.2022 0:42
Avatar
TomL
Člen
Avatar
Odpovídá na TomL
TomL:17.2.2022 22:09

Dnes vyřešeno. Protože jsem v Netbeans 12.6 u projektu nenašel záložku 'Libraries' (možná volím na samém začátku nějaký jiný typ projektu než autor článku - já dávám 'Java with Maven'), přidal jsem konektor přes pom.xml:

<dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
    </dependencies>
 
Odpovědět
+2
17.2.2022 22:09
Avatar
Attila Jančik:22.2.2022 15:14

a newindowsáci radši použijte :

Scanner scanner = new Scanner(System.in, StandardCharsets.UTF_8.name());
Odpovědět
22.2.2022 15:14
čo zješ, to ti už nevezmú...
Avatar
Odpovídá na TomL
Kamila Miková:5.6.2022 22:20

děkuju moc, taky se s tím trápím několik hodin :D

 
Odpovědět
5.6.2022 22:20
Avatar
Adam Sochor
Člen
Avatar
Odpovídá na Kamila Miková
Adam Sochor:20.6.2022 19:29

Já toto řeším vytvoření aplikace Java with Ant, kde se v Properties záložka Libraries nachází. Žádné velké změny stejně jako v JavaFX oproti Mavenu nepociťuji. Akorát v novějších verzích NetBeans se Libraries liší, nyní se musí uvádět zvlášť modulpath (knihovna MySQL JDBC Driver) a classpath (jar soubor s konektorem). Jinak je článek fajn a vše mi funguje.

 
Odpovědět
+1
20.6.2022 19:29
Avatar
Jan Růžička:29.6.2022 23:14

Řešil jsem obdobně, jako v předchozím komentáři. Zvolil jsem Java with Ant, zde se záložka Libraries nachází.
Poté kliknu na Libraries pravým, zvolím Properties.
Pak mi stačilo přidat pouze mysql-connector (soubor .jar) do Classpath.
Přiložil jsem obrázek, kde je zobrazeno, jak se v nové verzi NetBeans soubor .jar přidává.

 
Odpovědět
+1
29.6.2022 23:14
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 31.