我有二进制 std::string ,我需要使用我拥有的简单数据层将它插入到 BLOB (MySQL) 中。所以,我需要执行查询:ExecuteSQL((LPTSTR)strQ)
。
当我创建此查询字符串 (strQ) 时,我无法在添加此二进制字符串后向字符串中添加任何内容 - 如果终止它只是一种类型,并且无法添加任何内容。我不想使用mysql_real_escape_string
,因为我想不仅为 MySQL 保留它。
请任何人帮忙!!!
假设您的代码如下所示:
std::string s = ... // populate string somehow
ExecuteSQL( (LPCSTR) s );
然后你有几个问题。Forstly,演员阵容不会工作。在 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