MYSQL connector

Nedaří se vám s projektem a nenašli jste vhodné místo, kde se zeptat? Napište sem.
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: MYSQL connector

Příspěvek od KamilV » 11 led 2021, 18:58

Ale vždyť jsem to psal, že takto se tam obsah proměnné nedostane. Podle datového typu použiješ placeholder a ve sprintf tam naleješ hodnoty.
V příkladu té knihovny to máš.

sachlj
Příspěvky: 89
Registrován: 10 pro 2020, 19:22
Reputation: 0

Re: MYSQL connector

Příspěvek od sachlj » 12 led 2021, 06:58

Právě, kdybych věděl jak to tam zapsat tak se neptám...poradíš jak to tam napsat?
Neexistují hloupé otázky, existují jen hloupé odpovědi.
Chci aby "chytrá" elektronika dělala "chytré" a užitečné věci. Tím není aby nahrazovala něco co se dá hotové koupit za pár korun.

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: MYSQL connector

Příspěvek od KamilV » 12 led 2021, 14:35

Aha, jasně:

Nejprve si připravíš "nedosazený" dotaz, něco jako statement. Tam, kam budeš chtít později dosadit textovou proměnnou, umístíš placeholder %s, tam kde
bude int, dáš placeholder %d.
Pozor na floaty, ty budeš muset konvertovat na string pomocí dtostrf() a dosadit jako %s.

Kód: Vybrat vše

char sql_stmt[] = "INSERT INTO table (col1, col2, col3) VALUES ('%s',%d,'%s')";
Pak si připravíš nějaký buffer, kam se uloží "dosazený" dotaz.

Kód: Vybrat vše

char query[128];
No a teď placeholdery nahradíš hodnotami proměnných.

Kód: Vybrat vše

sprintf(query, sql_stmt, "test", 17, "col3");
Co se stalo?
Do query se uložil dotaz v sql_stmt a jeho placeholdery se nahradily za reálné hodnoty. Pozor, u hodnot je důležité zachovat pořadí placeholderů.
Za první %s se dosadilo "test", za druhé %d se dosadilo 17, za poslední %s se dosadilo "col3".

A vykonám.

Kód: Vybrat vše

cursor->execute(query);
Do DB se poslal dotaz:

Kód: Vybrat vše

INSERT INTO table (col1, col2, col3) VALUES ('test',17,'col3')

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: luger a 11 hostů