【发布时间】:2015-08-09 05:09:10
【问题描述】:
ResultSet *search;
....
....
search= prepareStatement->executeQuery();
while (search->next())
{
cout << "Email Found: " << search->getString("EmailColumn") << endl; //crashes here
}
从上面的代码中,调用getString()函数实际上获取数据库中的值。但随后它使程序崩溃。它显示值然后崩溃程序。
我发现 问题,但无法 修复。我不知道这是一个错误还是其他问题。
只有在 EmailColumn column 中值的 length 为 more 或 equals 时才会出现问题16。如果值的长度 小于或等于到15,则无错误。
对此有任何解决方案或变通办法吗?
【问题讨论】:
-
嗯......最简单的解决方法是使用最大字符串。您的数据库中的长度为 15。开个玩笑 ;) ...... ResultSet 类是自写类吗?如果是这样......它是否有一个 char-Array 用于存储从 DB 返回的字符串,这个 char-Array 是否限制为 16 个?
-
ResultSet 不是我写的。它来自 Oracle,被用来在查询数据库后读取从数据库返回的值。 getString 似乎是从数据库中获取字符串的唯一方法。
-
代码看起来不错。但我没有看到 ResultSet::getString 重载将字符串作为 Oracle 文档中的参数(我不熟悉库,所以只需检查它)。还要检查你是否链接了正确的库,如stackoverflow.com/questions/10803306/…
-
作为 nikitoz,我在 OCCI 库中找不到任何此类重载函数。如果您使用的是 OCCI,我建议您在标签中添加“occi”。否则......给我们一个提示,这个类来自哪里。
-
有许多关于 SO 的问题与 ResultSet::getString() 的问题有关,原因各不相同。您是否尝试过任何这些问题中建议的修复?例如:(stackoverflow.com/questions/15832958/…)、(stackoverflow.com/questions/24014069/…)、(stackoverflow.com/questions/4822958/…)
标签: c++ mysql crash database-connection mysql-connector