我有二进制std :: string,我需要使用简单的数据层将其插入BLOB(MySQL)。所以,我需要执行查询:ExecuteSQL((LPTSTR)strQ)
。
当我创建此查询字符串(strQ)时,在添加此二进制字符串后,我无法向字符串添加任何内容 - 如果已终止并且无法添加任何内容,则只需要它。我不想使用mysql_real_escape_string
,因为我想不仅仅是为了MySQL。
任何人请帮助!!!
答案 0 :(得分:2)
假设你的代码看起来像这样:
std::string s = ... // populate string somehow
ExecuteSQL( (LPCSTR) s );
然后你有几个问题。最后,演员不会奏效。在C ++中,每当使用强制转换时,您几乎肯定会做一些不正确的事情,这会破坏您的代码。您需要使用std :: string成员函数c_str():
创建以null结尾的字符串ExecuteSQL( s.c_str() );
但是,这可能无法解决您的所有问题,因为您说您有二进制字符串。如果该字符串包含零字节,那么您的SQL将终止于该字符而不是字符串的结尾。在这种情况下,您可能需要调查显式绑定您的值。
编辑:有关如何将参数绑定到MySQL语句的详细信息,请参阅http://dev.mysql.com/doc/refman/5.1/en/mysql-stmt-bind-param.html