Вставить символ в таблицу MYSQL с помощью C ++ - PullRequest
2 голосов
/ 12 марта 2012

Приведенные ниже коды вставляют значения в базу данных MYSQL.Если я использую "sprintf (Query," INSERT в t (d) значения (% c) ", a);"это не вставит слово привет в мою базу данных.Я также попытался использовать (% s) в приведенном выше заявлении.Однако, если я использую "sprintf (Query," INSERT в t (d) значения (% d) ", b);"он вставляет значения 1234 в базу данных.

Что происходит?Почему он не вставляет символ или строку в мою базу данных, а только целые числа?

Столбец d моей базы данных определен как тип символа.

#include "stdafx.h"
#include <stdio.h>
#include <mysql.h> 
//#include <string>
//using std::string;
//#include <atlstr.h>

MYSQL *pConnection;
MYSQL_RES *pResult=NULL; 
MYSQL_ROW Row;
char Query[256];

int main(int argc, char* argv[])
{
    pConnection = mysql_init(NULL);

    mysql_real_connect(pConnection,"localhost","root","y123","test",0,NULL,0); 

char a[] ="Hello"; 
int b = 1234;
printf("%s", a);

sprintf(Query, "INSERT into t(d) values (%s)", a);
mysql_query(pConnection, Query);

}   

Ответы [ 2 ]

4 голосов
/ 12 марта 2012

Вам все еще нужно написать правильно отформатированные запросы.У вас нет строк вокруг вставленного значения:

sprintf(Query, "INSERT into t(d) values ('%s')", a);
                                         ^--^-- missing

Ваша версия генерирует что-то вроде

INSERT INTO t(d) values (foo);

, почти наверняка в вашей таблице нет поля с именем foo, поэтому запрос не будет выполнени вернуть «ложное» значение.Поскольку у вас не было ошибок при проверке, вы бы никогда не заметили, что что-то не работает.

НИКОГДА не предполагайте, что запрос выполнен успешно. ВСЕГДА проверять возвращаемые значения на успех / неудачу.Даже если ваш SQL на 100% совершенен и действителен, он все равно может потерпеть неудачу по ряду других причин.

2 голосов
/ 12 марта 2012

Строки SQL должны быть в одинарных кавычках:

sprintf(Query, "INSERT into t(d) values ('%s')", a);
// Note the single quotes ---------------^--^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...