Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kate11
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 33
#1

Передать параметры в строку - C++

10.08.2012, 17:49. Просмотров 734. Ответов 12
Метки нет (Все метки)

Всем привет, подскажите как правильно передать параметры в такую строку?
C++
1
char *stat = "INSERT INTO tablica(id, mas, res) VALUES('123', '234', '324')";
Ну т.е. чтобы вместо цифр вставить переменные в которых будет содержаться информация.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.08.2012, 17:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передать параметры в строку (C++):

Передать параметры в main - C++
Нужно передать два параметра типа double в исполняемы файл ./Lab_10_2k Ни как не получается передать два параметра. Вот код основной...

Передать параметры в функцию. - C++
Всем привет! Не получается передать параметры из Delphi в библиотеку написанную на C++. Код программы: #define...

передать ссылки как параметры - C++
народ объясните для чего они нужны,ссылки как параметры,или же указатели,в книге прочел не дошло если у кого есть книга С++ за 21 день то...

Как передать параметры в main ? - C++
нужно передать параметры с командной строки в основную функцию. например я хочу найти cos(x). как задать и передать значение параметра X...

Как передать параметры через ShellExecute - C++ - C++
Приветствую Как передать строку и число через ShellExecute? SHELLEXECUTEINFO ShExecInfo = { 0 }; ShExecInfo.cbSize =...

string обьявленый в классе передать в параметры конструктора - C++
class String{ char str; string str2; public: String(char string){ strcpy(str,string); } String(string newStr){...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zss
Модератор
Эксперт С++
6380 / 5945 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
10.08.2012, 17:58 #2
C++
1
2
3
4
5
6
7
8
char stat[100]= "INSERT INTO tablica(id, mas, res) VALUES('";
char a[]="123",b[]= "234",c= "324",end[]="')";
strcat(stat,a);
strcat(stat,"','");
strcat(stat,b);
strcat(stat,"','");
strcat(stat,c);
strcat(stat,end);
или, если a,b,c целые числа
C++
1
2
char stat[100];
sprintf(stat,"INSERT INTO tablica(id, mas, res) VALUES('%d', '%d', '%d')",a,b,c);
1
StasGamilton
Эксперт по пяченькам
67 / 67 / 1
Регистрация: 16.08.2011
Сообщений: 258
10.08.2012, 18:01 #3
C++
1
2
3
4
5
6
std::stringstream ss;
ss << "INSERT INTO tablica(id, mas, res) VALUES"
     << "('" << id << "', "
     << "' " << mas << "'. "
     << "' " << res << "') ";
char *stat = ss.str().c_str();
?
1
nameless
Эксперт C++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
10.08.2012, 18:06 #4
kate11, boost::format

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
 
#include <boost/format.hpp>
 
int main() {
   const char * str = 
      boost::str(
         boost::format("INSERT INTO tablica(id, mas, res) VALUES('%1%', '%2%', '%3%')") % 123 % 234 % 324
      ).c_str();
   
   std::cout << str << std::endl;
}
http://liveworkspace.org/code/10a5f3...c24ab009324bae
1
kate11
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 33
11.08.2012, 01:22  [ТС] #5
Спасибо ребят, но так и не получилось у меня почему-то... вот весь код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <my_global.h>
#include <mysql.h>
 
int main(int argc, char **argv)
{
  MYSQL *conn;
  int len, size;
  char data[1000*1024];
  char chunk[2*1000*1024+1];
  char query[1024*5000];
  FILE *fp;
  conn = mysql_init(NULL);
  mysql_real_connect(conn, "localhost", "root", "", "testbd", 0, NULL, 0);
  fp = fopen("img.png", "rb");
  size = fread(data, 1, 1024*1000, fp);
  mysql_real_escape_string(conn, chunk, data, size);
  char *stat = "INSERT INTO imt(num, img, name) VALUES('1', '%s', '1')";
  len = snprintf(query, sizeof(stat)+sizeof(chunk) , stat, chunk, st);
  mysql_real_query(conn, query, len);
  fclose(fp);
  mysql_close(conn);
}
Как вместо единичек добавить переменные которые задавались бы выше?
0
zss
Модератор
Эксперт С++
6380 / 5945 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
11.08.2012, 09:41 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <my_global.h>
#include <mysql.h>
 
int main(int argc, char **argv)
{
  MYSQL *conn;
  int len, size;
  char data[1000*1024];
  char chunk[2*1000*1024+1];
  char query[1024*5000];
  FILE *fp;
  conn = mysql_init(NULL);
  mysql_real_connect(conn, "localhost", "root", "", "testbd", 0, NULL, 0);
  fp = fopen("img.png", "rb");
  size = fread(data, 1, 1024*1000, fp);
  mysql_real_escape_string(conn, chunk, data, size);
  int val1=1,val2=1;
  char stat[] = "INSERT INTO imt(num, img, name) VALUES('%d', '%s', '%d')";
  len = snprintf(query, sizeof(stat)+sizeof(chunk) , stat, val1,chunk, val2);
  mysql_real_query(conn, query, len);
  fclose(fp);
  mysql_close(conn);
}
1
Spirited
7 / 7 / 0
Регистрация: 18.01.2009
Сообщений: 55
11.08.2012, 10:00 #7
может не работать из-за того, что одинарные скобки не экранированы, т.е. поставь возле каждой ' поставь \'.
1
kate11
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 33
12.08.2012, 17:31  [ТС] #8
Цитата Сообщение от zss Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <my_global.h>
#include <mysql.h>
 
int main(int argc, char **argv)
{
  MYSQL *conn;
  int len, size;
  char data[1000*1024];
  char chunk[2*1000*1024+1];
  char query[1024*5000];
  FILE *fp;
  conn = mysql_init(NULL);
  mysql_real_connect(conn, "localhost", "root", "", "testbd", 0, NULL, 0);
  fp = fopen("img.png", "rb");
  size = fread(data, 1, 1024*1000, fp);
  mysql_real_escape_string(conn, chunk, data, size);
  int val1=1,val2=1;
  char stat[] = "INSERT INTO imt(num, img, name) VALUES('%d', '%s', '%d')";
  len = snprintf(query, sizeof(stat)+sizeof(chunk) , stat, val1,chunk, val2);
  mysql_real_query(conn, query, len);
  fclose(fp);
  mysql_close(conn);
}
Не добавляет, даже с экранированными кавычками, в чем может быть проблема?
0
Spirited
7 / 7 / 0
Регистрация: 18.01.2009
Сообщений: 55
12.08.2012, 17:45 #9
попробуйте явно что-то записать, например,
char stat[] = "INSERT INTO imt(name) VALUES('sdfjhsdf')";

что-то в этом роде.
0
kate11
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 33
12.08.2012, 17:50  [ТС] #10
Цитата Сообщение от Spirited Посмотреть сообщение
попробуйте явно что-то записать, например,
char stat[] = "INSERT INTO imt(name) VALUES('sdfjhsdf')";

что-то в этом роде.
Я выше приводила код, в котором указано явно - все добавлялось, а тут странно почему-то ничего не добавляется и ошибок не каких не пишет...
0
Spirited
7 / 7 / 0
Регистрация: 18.01.2009
Сообщений: 55
12.08.2012, 18:02 #11
погодите вы хотите записать в базу данных эти значение '%d', '%s', '%d'?
если да? то попробуйте написать этот запрос напрямую в мускл

Ваш запрос именно это и делает, в поле num должно записаться %d, в img - %s, name - %d.

Когда Вы вставляете явные значения работать будет на ура. Напишите функцию которая формирует запрос.
0
kate11
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 33
12.08.2012, 18:09  [ТС] #12
Цитата Сообщение от Spirited Посмотреть сообщение
погодите вы хотите записать в базу данных эти значение '%d', '%s', '%d'?
если да? то попробуйте написать этот запрос напрямую в мускл

Ваш запрос именно это и делает, в поле num должно записаться %d, в img - %s, name - %d.

Когда Вы вставляете явные значения работать будет на ура. Напишите функцию которая формирует запрос.
Да нет, настолько усложнять мне не нужно, мне нужно банально передать эти 2 параметра.
0
Spirited
7 / 7 / 0
Регистрация: 18.01.2009
Сообщений: 55
12.08.2012, 19:21 #13
я Вам уже наклипал на скорую руку эту функцию

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
char *InsertQuery(int num, char *img, char *name) {
 
    char *query = "INSERT INTO tablica(id, mas, res) VALUES(\'";
    char numCh[33];
    itoa(num, numCh,10);
 
    strcat(query, numCh);
    strcat(query, "\', \'");
    strcat(query, img);
    strcat(query, "\', \'");
    strcat(query, name);
    strcat(query, "\'");
 
    return query;
}
 
int main(int argc, char* argv[])
{
    int num = 1;
    char *img = "123";
    char *name = "serg";
 
    char *query;
 
    query = InsertQuery(num, img, name);
 
    cout << query;
 
    system("pause");
 
    return 0;
}
Добавлено через 1 минуту
но она требует доработки))

Добавлено через 53 минуты
переработаный вариант

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
char *InsertQuery(int num, char *img, char *name) {
    char *query = new char [100];
    char *query1 = "INSERT INTO tablica(id, mas, res) VALUES('";
    char numCh[100];
    itoa(num, numCh,10);
 
    strcpy(query, query1);
    strcat(query, numCh);
    strcat(query, "', '");
    strcat(query, img);
    strcat(query, "', '");
    strcat(query, name);
    strcat(query, "')");
 
    return query;
}
Добавлено через 1 минуту
теперь вы можете формировать свой запрос
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2012, 19:21
Привет! Вот еще темы с ответами:

Как в функцию обработки сообщений передать параметры? - C++
Как в функцию обработки сообщений типа void CMathematicsView::OnResultButton() передать параметры? Как и где написать прототип и...

Как в Dev C++ передать параметры командной строки - C++
Мне необходимо данные брать из файла. Путь к файлу нужно передавать как параметр командной строки argv. Подскажите пожалуйста как это...

Нужно из класса наследника передать параметры в класс родителя - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; class ploskost{ protected: float d; int x1,y1,x2,y2; public: ...

Как передать параметры конструктора одного класса другому? - C++
Скажите пожалуйста, как это должно работать? Как передать параметры конструктора одного класса другому? #include &lt;iostream&gt; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
12.08.2012, 19:21
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru