我查看了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.