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

5 c++ mysql blob

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

当我创建这个查询字符串(strQ)时,我添加这个二进制字符串后无法向字符串添加任何内容 - 如果终止它就会很好,并且不能添加任何内容.我不想使用mysql_real_escape_string因为我想保留它不仅适用于MySQL.

有人帮忙请!!!

小智 2

假设您的代码如下所示:

std::string s = ...      // populate string somehow
ExecuteSQL( (LPCSTR) s );
Run Code Online (Sandbox Code Playgroud)

那么你就会遇到几个问题。首先,演员阵容不会起作用。在 C++ 中,每当您使用强制转换时,几乎肯定会做一些不正确的事情,这会破坏您的代码。您需要使用 std::string 成员函数 c_str() 创建一个以 null 结尾的字符串:

ExecuteSQL( s.c_str() );
Run Code Online (Sandbox Code Playgroud)

但是,这可能无法解决您所有的问题,因为您说您有一个二进制字符串。如果该字符串包含零字节,那么您的 SQL 将在该字符处终止,而不是字符串末尾。在这种情况下,您可能需要研究显式绑定您的值。

编辑:有关如何将参数绑定到MySQL语句的详细信息,请参阅http://dev.mysql.com/doc/refman/5.1/en/mysql-stmt-bind-param.html