Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Переменная внутри цетирования(на С++), помогите плиз (http://forum.oszone.net/showthread.php?t=83674)

Midnight-Ghost 07-05-2007 04:39 583866

Переменная внутри цетирования(на С++), помогите плиз
 
Есть следущая проблема
Код:

if(mysql_query(conn, "CREATE TABLE menu_"СЮДА НАДО ВСТАВИТЬ ПЕРЕМЕННУЮ" (id_menu INT NOT NULL, caption VARCHAR(50))"))
{
cout<<"Error creating table"<<endl;
}

как реализовать такое? как внутри цетирования всунуть переменную?

EvgeniyQQQ 07-05-2007 14:01 584042

Если я правильно понял ваш вопрос. Необходимо создать строковую переменную, в которую вы поместите первую часть комментария, затем добавите вторую, затем третью.

Можно так:
Код:

char s[256] = "";
memcpy(s,"CREATE TABLE menu_",strlen("CREATE TABLE menu_"));
memcpy(&s[strlen("CREATE TABLE menu_")],"СЮДА НАДО ВСТАВИТЬ ПЕРЕМЕННУЮ", strlen("СЮДА НАДО ВСТАВИТЬ ПЕРЕМЕННУЮ"));
memcpy(&s[strlen("СЮДА НАДО ВСТАВИТЬ ПЕРЕМЕННУЮ")]," (id_menu INT NOT NULL, caption VARCHAR(50))", strlen(" (id_menu INT NOT NULL, caption VARCHAR(50))"));

В MFC можно так:
Код:

CString str;
str = "CREATE TABLE menu_";
str+="СЮДА НАДО ВСТАВИТЬ ПЕРЕМЕННУЮ";
str+=" (id_menu INT NOT NULL, caption VARCHAR(50))";

//и потом так str.GetBuffer();


pva 08-05-2007 11:40 584395

я бы сделал так:
Код:

#include <sstream>

some_type my_var;

...

std::ostringstream sql;
sql << "Create table menu_" << my_var << "(id_menu INT NOT NULL, caption VARCHAR(50))";
if (... sql.str().c_str()) ...



Время: 08:52.

Время: 08:52.
© OSzone.net 2001-