2009-04-09 3 views
5

У меня есть двоичная std :: строка, и мне нужно вставить ее в BLOB (MySQL), используя простой слой данных, который у меня есть. Итак, мне нужно выполнить запрос: ExecuteSQL((LPTSTR)strQ).Как INSERT двоичный std :: string в BLOB

Когда я создаю эту строку запроса (strQ), я не могу ничего добавить к строке после того, как я добавлю эту двоичную строку - она ​​просто добр, если она завершена, и ничего не может быть добавлено. Я не хочу использовать mysql_real_escape_string, потому что я хочу сохранить его не только для MySQL.

Кто-нибудь, кто поможет ПОЖАЛУЙСТА !!!

ответ

2

Если у вас есть код, который выглядит примерно так:

std::string s = ...  // populate string somehow 
ExecuteSQL((LPCSTR) s); 

Тогда у вас есть несколько проблем. В самом деле, актерский состав не будет работать. В C++, всякий раз, когда вы используете актерский состав, вы почти наверняка делаете что-то неправильное, что сломает ваш код. Вам нужно создать строку с завершающим нулем с помощью функции-члена c_str станд :: строки():

ExecuteSQL(s.c_str()); 

Однако это не может решить все ваши проблемы, потому что вы говорите, что вы хав двоичной строки. Если эта строка содержит нулевой байт, то ваш SQL будет заканчиваться на этом символе, а не на конце строки. В этом случае вам, вероятно, придется исследовать привязку ваших значений явно.

Edit: Для получения дополнительной информации о том, как связать параметр в заявлении MySQL см http://dev.mysql.com/doc/refman/5.1/en/mysql-stmt-bind-param.html

+0

Да, (LPCSTR) s создается с помощью strSQL.c_str(), но сначала нам нужно создать этот strSQL (Std :: string) like: strSQL = "INSERT INTO mydatabase.mytable (col1, BLOBCol2) VALUES ('"; strSQL + = strForCol1; strSql + = "', '"; и теперь нам нужно добавить эту двоичную строку ... – 2009-04-09 08:47:37

+0

Основная проблема - это escape-символы, и главный вопрос: мы можем сделать это без использования mysql_real_escape_string? Любые примеры будут большой помощью. Говоря о привязывающих значениях - можете ли вы привести пример, пожалуйста? – 2009-04-12 10:29:15

 Смежные вопросы

  • Нет связанных вопросов^_^