如何将二进制std :: string插入BLOB

时间:2009-04-09 07:56:09

标签: c++ mysql blob

我有二进制std :: string,我需要使用简单的数据层将其插入BLOB(MySQL)。所以,我需要执行查询:ExecuteSQL((LPTSTR)strQ)

当我创建此查询字符串(strQ)时,在添加此二进制字符串后,我无法向字符串添加任何内容 - 如果已终止并且无法添加任何内容,则只需要它。我不想使用mysql_real_escape_string,因为我想不仅仅是为了MySQL。

任何人请帮助!!!

1 个答案:

答案 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