Portál AbcLinuxu, 10. května 2025 05:32

Dotaz: mysql a jazyk C

24.8.2003 20:49 pavel
mysql a jazyk C
Přečteno: 240×
Odpovědět | Admin
Chtěl bych se zeptat: Píšu nějakej program v C a používám tam mysql C api. Kde se vše točí kolem funkce mysql_query. Já bych potřeboval vědět, jestli jde nějak jednoduše udělat, že když mám v proměnné uložen název tabulky, kterou mám vytvořit, aby šla použít v tom řetězci. Např: mysql_query(&mysql, "create table tabulka (.....)"); Aby to tu proměno tabulka bralo jako proměnou a nikoliv již jako název té tabulky. Řešil jsem to, že jsem si ten řetězec nejdřív poskládal předem a pak ho tam vložil. Jsem v C začátečník, tak bych se chtěl zeptat, jestli by to nešlo udělat nějak jednodušeji. Dík moc Pavel.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

24.8.2003 21:11 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše mysql a jazyk C
Odpovědět | | Sbalit | Link | Blokovat | Admin
v podstatě se to tak dělá můžeš si napsat jednoduchý wrapper kolem vasprintf() a mysql_query(), který ti umožní psát věci analogicky printf() my_cunning_mysql_query(&mysql, "create table %s blabla %d...", string, číslo, ...);
24.8.2003 21:50 pavel
Rozbalit Rozbalit vše mysql a jazyk C
Takhle kdyby to fungovalo jako printf to by bylo skvělý, ale netušim co to je wrapper a jak ho vytvořit. Jak už jsem řekl jsem začátečníkem v C, tak budu za každou pomoc vděčný dík Pavel.
24.8.2003 22:07 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše mysql a jazyk C
wrapper je funkce (nebo jiná věc) která nějak obaluje jinou funkci (nebo jinou věc) mohl by vypadat třeba takhle (akorát sprav ten název ;-)
#include <mysql/mysql.h>
#inlcude <stdarg.h>
 
int
my_cunning_mysql_query(MYSQL *mysql,
                       const char *template,
                       ...)
{
  va_list ap;
  int err;
  char *query = NULL;
 
  va_start(ap, template);
  vasprintf(&query, template, ap);
  va_end(ap);
  err =  mysql_query(mysql, query);
  free(query);
  return err;
}
24.8.2003 22:20 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše mysql a jazyk C
Upozorňuji, že vasprintf() je GNU extension a funguje jen s GNU libc a *BSD.
24.8.2003 22:34 Pavel | skóre: 10
Rozbalit Rozbalit vše mysql a jazyk C
Dík moc to je přesně co jsem potřeboval, to člověk teprve čumí co to céčko všechno umí.
Nikdy neříkejte, že něco nejde. Vždy se najde iniciativní blbec, který neví, že to nejde a udělá to!

Založit nové vláknoNahoru

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

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.