gpt4 book ai didi

c++ mysql存储前过程多个输出参数错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:59:56 27 4
gpt4 key购买 nike

我使用 Freebsd 8.0 amd64、mysql-client-5.1.61、mysql-connector-c++-1.1.0、mysql-server-5.1.61 和 gcc 4.2.1 Whay 这是有效的

stmt->execute("CREATE PROCEDURE p(OUT retval VARCHAR(50)) BEGIN SELECT \"Ulf joined MySQL more than 5 years ago\" INTO retval; END;");

pstmt.reset(con->prepareStatement("CALL p(@output)"));
pstmt->execute();

pstmt.reset(con->prepareStatement("SELECT @output AS _answer"));
res.reset(pstmt->executeQuery());
while (res->next())
cout << "\t... _answer: " << res->getString("_answer") << endl;

这不是

stmt->execute("CREATE PROCEDURE p(OUT retval VARCHAR(50),OUT retval1 VARCHAR(50)) BEGIN SELECT \"Ulf joined MySQL more than 5 years ago\" INTO retval;SELECT \"Ulf joined MySQL more than 5 years ago\" INTO retval1;  END;");
pstmt.reset(con->prepareStatement("CALL p(@out1,@out2)"));
pstmt->execute();

pstmt.reset(con->prepareStatement("SELECT @out1 AS vOut,@out2 as vOut2"));
res.reset(pstmt->executeQuery());
while (res->next())
cout << res->getString("vOut1") << res->getString("vOut2") << endl;

并返回 ERR: MySQLPreparedResultSet::getString: invalid 'columnIndex' (MySQL error code: 0, SQLState: )怎么了?

最佳答案

假设您逐字复制了代码,我认为问题是由一个简单的拼写错误引起的。在这一行中:

pstmt.reset(con->prepareStatement("SELECT @out1 AS vOut,@out2 as vOut2"));

参数的列名是 vOutvOut2。但在后一行:

cout << res->getString("vOut1") << res->getString("vOut2") << endl;

您将它们称为 vOut1vOut2。没有名称为 vOut1 的列,因为您将其命名为 vOut,因此列索引错误无效。

关于c++ mysql存储前过程多个输出参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10267558/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com