Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2009, 18:55   #1
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
По умолчанию Запрос к БД с меняющейся переменной

Необходимо выполнять запрос с меняющейся переменной. Как вставить в запрос переменную, т.е. чтобы название "здесь переменная" воспринималось как имя переменной, а не текст поля name?

Код:
 if (mysql_query(&mysql,"SELECT name FROM users WHERE name='здесь переменная'"))
Pamparam вне форума Ответить с цитированием
Старый 10.11.2009, 23:43   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

да откуда вас столько прет то, работников с бд...

Цитата:
const char *name = "vasya";
char buff[512];
sprintf(buff, "SELECT name FROM users WHERE name = '%s' ", name);

if (mysql_query(&mysql, buff)) {
....
}
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 11.11.2009, 15:40   #3
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
По умолчанию

1>.\game.cpp(179) : error C2440: инициализация: невозможно преобразовать 'std::string' в 'const char *'
1> Для выполнения данного преобразования нет доступного оператора преобразования, определенного пользователем, или вызов оператора невозможен
Pamparam вне форума Ответить с цитированием
Старый 11.11.2009, 15:47   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Pamparam
ну строчку №179 можно увидеть/лицезреть/обозреть? предлагаешь угадать, что там?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 11.11.2009, 15:53   #5
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
2Pamparam
ну строчку №179 можно увидеть/лицезреть/обозреть? предлагаешь угадать, что там?
const char *name = (*i)->GetName( ); =)
Pamparam вне форума Ответить с цитированием
Старый 11.11.2009, 15:59   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

судя по ошибке, подозреваю, что надо:
Код:
const char *name = (*i)->GetName( ).c_str();
pu4koff вне форума Ответить с цитированием
Старый 11.11.2009, 16:06   #7
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
По умолчанию

Код:
const char *name = (*i)->GetName( )
char buff;
sprintf(buff, "SELECT name FROM users WHERE name = '%s' ", name);
getname у меня string

ошибки
Код:
1>.\game.cpp(179) : error C2440: инициализация: невозможно преобразовать 'std::string' в 'const char *'
1>        Для выполнения данного преобразования нет доступного оператора преобразования, определенного пользователем, 
или вызов оператора невозможен
1>.\game.cpp(181) : error C2664: sprintf: невозможно преобразовать параметр 1 из 'char' в 'char *'
1>        Для преобразования из целого типа в указатель требуется reinterpret_cast, приведение в стиле С или 
приведение в стиле функции
1>.\game.cpp(183) : error C2664: mysql_query: невозможно преобразовать параметр 2 из 'char' в 'const char *'
1>        Для преобразования из целого типа в указатель требуется reinterpret_cast, приведение в стиле С или 
приведение в стиле функции
.c_str(); не помог =(
Pamparam вне форума Ответить с цитированием
Старый 11.11.2009, 16:11   #8
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Да ладно... А на это что компилятор говорит?
Код:
const char *name = (*i)->GetName( ).c_str();
char buff[512];
sprintf(buff, "SELECT name FROM users WHERE name = '%s' ", name);
pu4koff вне форума Ответить с цитированием
Старый 11.11.2009, 16:23   #9
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Да ладно... А на это что компилятор говорит?
Код:
const char *name = (*i)->GetName( ).c_str();
char buff[512];
sprintf(buff, "SELECT name FROM users WHERE name = '%s' ", name);
или у меня корявые руки и я как-то не так написал c_str или компилятор издевается...
большое спасибо... ошибок теперь нет =)
Pamparam вне форума Ответить с цитированием
Старый 11.11.2009, 16:27   #10
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Код:
const char *name = (*i)->GetName( ).c_str() ;
char buff;
sprintf(buff, "SELECT name FROM users WHERE name = '%s' ", name);
и переменную name я завел для примера, в твоем случае можно сразу передавать в sprintf указатель на си строку
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тип переменной KoBRaAndrey Общие вопросы Delphi 2 06.10.2009 00:11
Имя переменной как переменная. Как получить доступ к такой переменной? Denni Microsoft Office Access 8 02.04.2009 10:06
Адрес переменной Pedro Общие вопросы Delphi 11 16.12.2008 13:03
запрос ссылается на несвязанный с ним запрос kolebatel SQL, базы данных 0 11.06.2008 12:50
Работа с файлами (создание, удаление, открытие, связываение с переменной, очищение памяти переменной) Arkuz Общие вопросы Delphi 12 25.09.2007 20:47