我查看了Stack Overflow的大量答案和问题,但它们都适用于旧版本的MySQL。我也搜索了互联网的碗,以获得答案,并尝试了许多不同的方法无济于事。那么问题是,如何在MySQL查询中使用C ++变量。

例如:
pstmt = con->prepareStatement("SELECT balance FROM accounts WHERE id = [C++ Var]");

其中[C ++ Var]是C ++变量。我不确定在MySQL 8中使用MySQL 5中的旧方法是否是个好主意。我认为最有效的方法是使用SET @var_name = data方法,但我找不到任何方法在C ++中实现它。目前我正在使用带驱动程序的MySQL/C ++ Connector 8.0。谢谢!

分析解答

我不明白为什么你需要在这里使用MySQL @xxx变量。

使用旧的MySQL C++ API(似乎是在Java JDBC API之后建模)prepareStatment调用应该如下所示:

pstmt = con->prepareStatement("SELECT balance FROM accounts WHERE id = ?");

以后你应该使用类似的东西

pstmt->setInt(1, userId); //where userId is a C++ int
ResultSet res* = pstmt->executeQuery()

使用较新的C++ API (X Dev API),调用类似于以下内容:

Table accounts = db.getTable("accounts");
auto query = accounts.select("balance").where("id = :account_id");

RowResult res = query.bind("account_id", account_id).execute(); // where account_id is the name of an int variable.