abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 12:44 | IT novinky

    Národní bezpečnostní tým CSIRT.CZ koordinovaný sdružením CZ.NIC přichází se službou Strážci internetu, která má sjednotit způsob hlášení doménových jmen zneužívaných k páchání trestné činnosti. Službu mohou uživatelé využívat také prostřednictvím rozšíření do prohlížeče. Nový nástroj podporuje jak hlášení vyžadující autorizaci, tak anonymní reporting, u kterého však nebude možné zapojit takovou míru automatizace jako u

    … více »
    Ladislav Hagara | Komentářů: 8
    dnes 12:22 | Komunita

    Firefox pro iOS přichází s integrovaným blokováním reklam. Funkce je ve výchozím nastavení vypnutá a lze ji aktivovat v Settings > Browsing > Ad Blocker.

    Ladislav Hagara | Komentářů: 1
    dnes 11:22 | IT novinky

    Společnost Hugging Face ve spolupráci se společností Pollen Robotics představila (𝕏) open-source robota Microduck. Předobjednat jej lze za 340 eur.

    Ladislav Hagara | Komentářů: 1
    dnes 10:55 | Nová verze

    Open-source autonomní AI agent OpenClaw (Wikipedie) byl vydán ve verzi 2026.8.1 aneb 2.0. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 18:55 | Nová verze

    Byla vydána první veřejná preview verze PrusaSliceru 3.0. Přesně 15 let po zveřejnění první verze Slic3ru, které připadlo na 1. září 2011. Jedná se o dosud největší upgrade PrusaSliceru: "Řídili jsme se tím, co skutečně potřebujete, a tak jsme například zcela zahodili stávající uživatelské rozhraní a vytvořili ho znovu od nuly. Přinášíme také nový systém projektů, kompletně přepracované profily navržené pro moderní tiskárny s větším

    … více »
    Ladislav Hagara | Komentářů: 1
    včera 15:55 | Nová verze

    Byl vydán Mozilla Firefox 155.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Vypíchnout lze Smart Window, zatím ale dostupné pouze pro uživatele v USA, Kanadě a Francii. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 155 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    včera 12:33 | IT novinky

    Tima Cooka na pozici generálního ředitele společnosti Apple dnešním dnem nahradil John Ternus, který byl dosud odpovědný za hardware. Tim Cook vedl Apple od roku 2011, kdy funkci převzal od později zesnulého spoluzakladatele společnosti Stevea Jobse. Za 15 let v čele Applu více než zdvojnásobil tržní hodnotu firmy.

    Ladislav Hagara | Komentářů: 2
    včera 11:00 | Pozvánky

    Organizátoři konference LinuxDays ukončil veřejné přihlašování přednášek. Teď je na vás, abyste vybrali nejlepší témata pro letošní ročník. Hlasovat můžete do pondělí 7. září, poté bude podle výsledků hlasování sestaven program pro letošní ročník.

    Petr Krčmář | Komentářů: 4
    včera 10:55 | Nová verze

    Servo, engine webového prohlížeče napsaný v Rustu, byl vydán ve verzi 0.5.0. Novinky shrnuje přehled projektu za červenec. Došlo k dalšímu pokroku ve vykreslování webových stránek. Současným cílem projektu je vytvořit komponentu webového prohlížeče jako WebView pro použití v jiných aplikacích.

    |🇵🇸 | Komentářů: 2
    včera 10:44 | IT novinky

    IKEA a XBOX představují kolekci YXSTABY (pdf). Ta přináší designová a praktická řešení, díky nimž se prostor pro hraní během sekundy promění v útulný a harmonický domov.

    Ladislav Hagara | Komentářů: 2
    Které desktopové prostředí na Linuxu používáte?
     (10%)
     (7%)
     (2%)
     (19%)
     (29%)
     (7%)
     (6%)
     (2%)
     (15%)
     (22%)
    Celkem 2535 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník

    Dotaz: QSqlQuery prepare

    xxxxxx avatar 2.6.2016 12:07 xxxxxx | skóre: 23
    QSqlQuery prepare
    Přečteno: 650×
    Zdravím,

    mám v Qt připojenou MySQL a nějak mi nejde do hlavy, jak to přesně funguje. Samozřejmě jsem prolezl Qt dokumentaci i SO, ale nic mi neodpovědělo.
    QSqlQuery query;
    
    QString prod_id = "blabla";
    
    query.exec("SELECT pictures FROM products WHERE id='" + prod_id + "';");
    
    // Funguje, query.next() je OK, hodnotu "pictures" dostanu
    
    QSqlQuery query;
    
    QString prod_id = "blabla";
    
    query.prepare("SELECT pictures FROM products WHERE id=:prod_id;");
    query.bindValue(":prod_id", prod_id);
    query.exec();
    
    // exec funguje, ale query.next() nic
    
    QSqlQuery query;
    
    QString prod_id = "blabla";
    
    auto db = QSqlDatabase::database();
    
    db.transaction();
    
    query.prepare("SELECT pictures FROM products WHERE id=:prod_id;");
    query.bindValue(":prod_id", prod_id);
    query.exec();
    
    db.commit();
    
    // Všechno funguje, hodnotu pictures dostanu
    
    Tedy rád bych věděl, proč 2. příklad nefunguje a proč je zapotřebí transakce? Ke stejné DB se připojuji ještě z PHP, kde prepare funguje bez transakce.

    Řešení dotazu:


    Odpovědi

    2.6.2016 16:19 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: QSqlQuery prepare
    Qt neznám, ale myslím si, že úplně stejně jako v PHP metoda prepare() vytvoří novou instanci, na kterou je následně bindují parametry. Tedy nikoli na objekt query, ale na objekt vytvořený v jeho továrně.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    xxxxxx avatar 2.6.2016 17:16 xxxxxx | skóre: 23
    Rozbalit Rozbalit vše Re: QSqlQuery prepare
    Bohužel, tady prepare vrací bool a podle dokumentace by to mělo fungovat, jako v tom 2. příkladu, jenže nefunguje.
    2.6.2016 17:52 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: QSqlQuery prepare
    V původním dotazu vidím, že prod_id je typu string. Neměl by to být integer?
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    xxxxxx avatar 2.6.2016 17:57 xxxxxx | skóre: 23
    Rozbalit Rozbalit vše Re: QSqlQuery prepare
    Nn, to tak má být, id tady může obsahovat jakékoliv znaky, takže je to varchar.
    Řešení 1× (xxxxxx (tazatel))
    skunkOS avatar 3.6.2016 08:35 skunkOS | skóre: 27 | blog: Tak nějak
    Rozbalit Rozbalit vše Re: QSqlQuery prepare
    Radím vytvářet QSqlQuery objekt přes tento konstruktor.

    http://martinrotter.github.io
    xxxxxx avatar 3.6.2016 11:17 xxxxxx | skóre: 23
    Rozbalit Rozbalit vše Re: QSqlQuery prepare
    Díky, tohle funguje :) Ale proč to funguje? Čekal bych, že si QSqlQuery automaticky vezme tu jedinou DB, ke které jsem připojen.
    3.6.2016 14:18 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: QSqlQuery prepare
    Proč by měl? Singletony už nefrčí.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    xxxxxx avatar 3.6.2016 14:32 xxxxxx | skóre: 23
    Rozbalit Rozbalit vše Re: QSqlQuery prepare
    Proto:

    QSqlQuery::QSqlQuery(QSqlDatabase db)

    Constructs a QSqlQuery object using the database db. If db is invalid, the application's default database will be used.

    Ale to mi pořád neodpovídá na to, proč to s transakcí nebo bez prepare() funguje i bez odkazu na existující DB.
    3.6.2016 15:15 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: QSqlQuery prepare
    Bude to nejspíš bug, který by se měl ohlásit vývojářům. Dosud na něj nejspíš nikdo nenarazil proto, že začátečníci obvykle nepoužívají prepared statements a pokročilí zase nepoužívají defaultní databázi.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    xxxxxx avatar 3.6.2016 15:52 xxxxxx | skóre: 23
    Rozbalit Rozbalit vše Re: QSqlQuery prepare
    A jaký je důvod ji nepoužívat? Od startu aplikace až do konce se bude používat jen jedna. Tím, že ji odliším pojmenováním si akorát do kódu přidám nutnost na tu DB odkazovat tím jménem. Když to udělám, nebude to pak svádět k tomu myslet si, že někde existuje ještě další? Nebo kvůli pozdějšímu případnému přidání další? Nebo jak to udělat lépe?
    3.6.2016 16:08 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: QSqlQuery prepare
    Například kvůli TDD. Obvykle se na testy používá jiná databáze, resp. mock. Je důležité vykopat vnější závislosti ven z objektů.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    xxxxxx avatar 3.6.2016 16:42 xxxxxx | skóre: 23
    Rozbalit Rozbalit vše Re: QSqlQuery prepare
    OK, díky :)

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.