Diskuze: login cez mysql
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 13 zpráv z 13.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.


Nevim jestli to je tim, ale zkus misto
rs = ps.executeQuery(sql);
dat jen
rs = ps.executeQuery();
ty si z stringu priprvis statement, pak ho zcnes plnit a potom das provyst znovu
novej sql (kterej uz asi nebude naplnenej).
Plus ted v dokumentaci ctu ze executeQuery(sql) by nikdy nemelo vratit null (bud Result set nebo vyjimka). Tzn jeste jednou to oddebuguj.
Returns: a ResultSet object that contains the data produced by the given query; never null
pozeram teraz triedu na spojenie s DB a tam mi to takto ide (no ale mam tam Statement nie Prepare..)
public class DBconnect {
public static Connection Connector() {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
System.out.println("Error");
return null;
}
Connection connection;//=null;
try {
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/dblogin", "root", "");
Statement stmt;
stmt = connection.createStatement();
String sql = "Select * from login";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
int id = rs.getInt("id");
String user = rs.getString("user");
String password = rs.getString("password");
System.out.println("ID " + id);
System.out.println("User " + user);
System.out.println("Password " + password);
}
} catch (SQLException e) {
e.printStackTrace();
return null;
}
return connection;
}
}
Statement je zjednodussene jen string s sql ktery se preda DB. PreparedStatement je dvoufazovy. Ty pripravis dotaz a potom do nej vkladas parametry. Dle meho nazoru u prepared statement executeQuery(String sql) zustalo jen jako pozustatek od rodice Statement a dle meho neni dobre ho pouzivat a je lepsi vyuzivat jen executeQuery(). V kazdem pripade to vyresetuje tvoji snahu s pripravou parametru v radcich vyse.
ked mam okno kde su ulozene nejake choiceboxy, textfieldy atd.. po ich vyplneni chcem aby sa udaje zapisali do DB. Je potrbne vzdy nadviazat spojenie??
String sql;
try {
Class.forName("com.mysql.jdbc.Driver");
sql = "select user,password from login where user = ? and password = ?";
// sql="SELECT user, password FROM `login` WHERE user = " + txtUser.getText() " and password = "test"";
ps = conn.prepareStatement(sql);
ps.setString(1, user);
ps.setString(2, pass);
rs = ps.executeQuery(sql);
(nie zrovna tento kod ale princip je rovnaky?)
Principy u databazovych aplikaci jsou nasledujici:
mozes ten posledny bod trocha viac vysvetlit? dik.
no a takto: mam rieseny login cez db (tak ako to je hore). tam som spojenie
uzavrel, ako prebehne login tak sa spojenie ukonci. (tvoj bod c.1). V aplikacii
budem pridavat data do db. Budu v nej textfieldy, comboboxy atd.(v tabulke asi 6
atributov). To budu len inserty do tabulky a potom v aplikaciu budu rozne
reporty(grafy) cize budem tahat z tych udajov co sa vkladali. cize tam bude
lepsie nechat otvorene spojenie?? (teda asi bod 2) mi iba tak v hlave prebehlo
ci by sa to nedalo riesit nejak transakciami (este neviem ako by som to napisal
ale myslienka neni zla
).
toto je troska mimo temy ale je to k aplikacii: Mam textfield kde potrebujem dat ciselne hodnoty s desatinou ciarkou (najlepsie asi double). Je mozno to nejak preparsovat na double?? najlepsie by bolo ak by nenapisalo ziaden iny znak iba cisla (a teda ciarku alebo bodku). S tymito hodnotami potrebujem dalej pracovat (nasobit). Hladal som na nete nejake riesenie ale nejak sa mi nepodarilo. Tam kde bude cisto len int som spravil toto:
tfKurz.textProperty().addListener((observable, oldValue, newValue) -> {
if(!newValue.matches("[0-9]*")) {
tfKurz.setText(oldValue);
// System.out.println(oldValue);
}
});
pre double to ale zatial neviem poriesit
dik za rady a pomoc 
to parsovanie som poriesil takto, neviem ci to je dobre riesenie ale ide
@FXML
public void parseDouble (ActionEvent event) throws Exception{
try{
Double kurz = Double.parseDouble(tfKurz.getText());
System.out.println(kurz);
}catch (NumberFormatException e){
System.out.println("chyba v parsovani");
}
}
Ahoj,
Zobrazeno 13 zpráv z 13.