Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Объединение строк и чисел 
V
    Опции темы
Reptor
Дата 17.10.2008, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



необходимо  запрос подставить значения переменных...

как это сделать если переменные идут как целые числа.

Код

mysql_query(&mysql, "INSERT INTO data SET side="+c[i].side))


c[i].side имеет тип int

Пробовал так:

Код

std::string getStr(int s)  
{    
    std::ostringstream stream;
    stream << s;
    return stream.str();
}

    std::string str; 
    str = getStr(c[i].side);

mysql_query(&mysql, "INSERT INTO data SET side="+str))


но компилятор ругается.

Как сделать что б можно было подстявлять переменные?

Это сообщение отредактировал(а) Reptor - 17.10.2008, 16:19
PM MAIL ICQ   Вверх
Andrey44
Дата 17.10.2008, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 2
Всего: 26



Код

char bufQuery[1024];
sprintf(bufQuery, "INSERT INTO data SET side=%d", c[i].side);
mysql_query(&mysql, bufQuery);



--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
eyeofhell
Дата 17.10.2008, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Адепт
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 16.10.2008
Где: Россия, Москва

Репутация: 1
Всего: 1



Да вообщем-то все правильно:
Код


std::string getStr(int s)  
{    
    std::ostringstream stream;
    stream << s;
    return stream.str();
}

// первая часть строки
std::string str = "INSERT INTO data SET side=";
// прибавляем к ней число
str += getStr(c[i].side);
// впендюриваем
mysql_query(&mysql, str))


Ну или проще:

Код

std::stringstream stream;
stream << "INSERT INTO data SET side=" << c[i].side;
mysql_query( & mysql, stream.str().c_str() );



P.S. sprintf - опасная штука smile

Это сообщение отредактировал(а) eyeofhell - 17.10.2008, 16:32
PM MAIL ICQ   Вверх
Andrey44
Дата 17.10.2008, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 2
Всего: 26



Цитата(eyeofhell @  17.10.2008,  16:31 Найти цитируемый пост)
P.S. sprintf - опасная штука 

Razve tolko dlya teh kto ne umeet polzovatsia. smile 
Nzvinite za takoy tekst.


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Reptor
Дата 17.10.2008, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



а как можно очистит stream..... ?  Он просто у меня в цыкле и накапливается.. из-за этого потом ошибки.
PM MAIL ICQ   Вверх
eyeofhell
Дата 17.10.2008, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Адепт
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 16.10.2008
Где: Россия, Москва

Репутация: 1
Всего: 1



Проще всего вот так:

Код

{
  std::stringstream stream; // вход в область видимости, новый стрим
  stream << "INSERT INTO data SET side=" << c[i].side;
  mysql_query( & mysql, stream.str().c_str() );
} // выход из области видимости, деструктор


Код

Razve tolko dlya teh kto ne umeet polzovatsia.


Да нет, программисты уровня адепта и выше на моей памяти палились. Не в hello world конечно, но палились smile.

PM MAIL ICQ   Вверх
Mayk
Дата 17.10.2008, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 3
Всего: 134



имхо тут вообще вместо склеивания строк  лучше использовать prepared statements.
и плевать что тут не стринги а интегеры.

Цитата(Andrey44 @  17.10.2008,  20:51 Найти цитируемый пост)
Razve tolko dlya teh kto ne umeet polzovatsia. smile 

sprintf в принципе невозможно нормально использовать. snprintf можно.


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Reptor
Дата 17.10.2008, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



Mayk, а что такое prepared statements?
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0524 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.