字符串destructor如何抛出异常?它是在可变 s
的尝试块的末尾投掷的。
Environment *env = Environment::createEnvironment(Environment::DEFAULT);
Connection *con;
con = env->createConnection(Config::login, Config::password, Config::connection_string);
string sqlStmt = "SELECT user FROM dual";
auto stmt = con->createStatement(sqlStmt);
ResultSet *rset = stmt->executeQuery();
try {
rset->next();
string s = rset->getString(1);
cout << "user: " << s << endl;
} // exception thrown here
阅读访问违规_pnext是0xfffffffffffffffffffff
问题是不同版本的CRT库。您的应用程序和Oracle的CRT库版本必须匹配。
似乎不像std :: string exception。
裸露的rset-&gt; next((是不明智的。应该在任何一个之前检查一下rset,更重要的是,如果(rset-&gt; next((({.. your code ..}是保护您免受自己的股票modus-operandi。
只需检查:
if (rset->next() == Status::DATA_AVAILABLE) {
auto s = rset->getString(1);
}