C++ 如何在BLOB中插入二进制std::string

C++ 如何在BLOB中插入二进制std::string,c++,mysql,blob,C++,Mysql,Blob,我有一个二进制std::string,我需要使用我拥有的简单数据层将它插入BLOB(MySQL)中。所以,我需要执行查询:ExecuteSQL((LPTSTR)strQ) 当我创建这个查询字符串(strQ)时,在我添加这个二进制字符串之后,我不能向字符串中添加任何内容-如果它被终止,那么就不会添加任何内容。我不想使用mysql\u real\u escape\u string,因为我不仅想为mysql保留它 请任何人帮忙 假设您有如下代码: std::string s = ... //

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

当我创建这个查询字符串(strQ)时,在我添加这个二进制字符串之后,我不能向字符串中添加任何内容-如果它被终止,那么就不会添加任何内容。我不想使用
mysql\u real\u escape\u string
,因为我不仅想为mysql保留它


请任何人帮忙

假设您有如下代码:

std::string s = ...      // populate string somehow
ExecuteSQL( (LPCSTR) s );
那么你有几个问题。福斯特利,演员阵容不起作用。在C++中,<强>每当使用< /强>使用一个强制转换时,几乎肯定会做一些不正确的操作,这会破坏代码。您需要使用std::string成员函数c_str()创建以null结尾的字符串:

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


Edit:有关如何将参数绑定到MySQL语句的详细信息,请参见

Yes,(LPCSTR)s是使用strSQL.c_str()创建的,但首先我们需要创建这个strSQL(std::string),比如:strSQL=“INSERT INTO mydatabase.mytable(col1,BLOBCol2)值(“;“strSQL+=strForCol1;strSQL+=”,”;现在我们需要添加这个二进制字符串…主要的问题是转义字符,主要的问题是-我们可以不用mysql_real_escape_string来做吗?任何例子都会很有帮助。谈到绑定值-你能举个例子吗?
ExecuteSQL( s.c_str() );