Если у вас есть код, который выглядит примерно так:
std::string s = ... // populate string somehow
ExecuteSQL( (LPCSTR) s );
Тогда у вас есть несколько проблем. К сожалению, актерский состав не сработает. В C ++ всякий раз, когда вы используете приведение, вы почти наверняка делаете что-то неправильное, что нарушит ваш код. Вам нужно создать строку с нулевым символом в конце, используя функцию-член std :: string c_str ():
ExecuteSQL( s.c_str() );
Однако это может решить не все ваши проблемы, потому что вы говорите, что у вас есть двоичная строка. Если эта строка содержит нулевой байт, то ваш SQL будет заканчиваться этим символом, а не концом строки. В этом случае вам, вероятно, нужно исследовать привязку ваших значений в явном виде.
Редактировать: Подробнее о том, как связать параметр с оператором MySQL, см. http://dev.mysql.com/doc/refman/5.1/en/mysql-stmt-bind-param.html