将多个char *插入带有预填充文本的const char *中

时间:2014-05-21 13:23:16

标签: c++ visual-studio-2010

我为我的c ++项目设置了一个有效的mysql连接器。现在我正在为注册用户登录。

我想将用户名和密码输入SQLquery字符串。

我想让这个工作: 目前正在显示注意事项和游戏崩溃。

#include "boost/lexical_cast.hpp" //boost
#include <cgl\cgl.h> // game library (core media library)
#include <sstream> // sstream
char* username=DEFSER;
char* password=PASS12345;
const char *SQLquery;

std::string SQLquery("SELECT * FROM Users WHERE UserName='" + boost::lexical_cast<std::string>(username) + "' AND PassWord='" + boost::lexical_cast<std::string>(password) + "'");

我想摆脱SQLquery:

SELECT * FROM Users WHERE UserName='DEFSER' AND PassWord='PASS12345'

我以这种方式执行它:

res = stmt->executeQuery(SQLquery);

这不是一个完全正常工作的代码我只想知道如何将用户名和密码输入SQLquery。

我尝试运行查询时出现

错误:

Run-Time Check Failure #3 - The variable 'SQLquery' is being used without being initialized.

1 个答案:

答案 0 :(得分:2)

您正在做的不是连接字符串,而是将std::string个对象添加到文字字符串指针。

std::string类处理concatenation C样式字符串就好了,没有任何lexical_cast,所以就这样做。

std::string SQLquery = "SELECT * FROM Users WHERE UserName='" +
    username + "' AND PassWord='" + password + "'";

经过测试,上述解决方案对我来说并不适用。但以下是:

std::string SQLQuery = (std::ostringstream() << "SELECT * FROM Users WHERE UserName='"
    << username << "' AND PassWord='" << password << "'").str();