循环遍历结果集
Looping through the resultset
我正在使用MySQL c++连接器,我试图以以下方式遍历结果集:应用程序应该遍历每个列,而不取决于数据类型。代码应该捕获数据类型,然后继续。问题是,我正在测试的表有16列,但我的代码只运行第一个?
try
{
driver = get_driver_instance();
con = driver->connect(connectionString, str_username, str_password);
con->setSchema(str_schema);
stmt = con->createStatement();
res = stmt->executeQuery(selectquery);
res_meta = res->getMetaData();
string datatype;
int columncount = res_meta->getColumnCount();
for (int i = 0; i < columncount; i++)
{
while (res->next())
datatype = res_meta->getColumnTypeName(i + 1);
{
if(datatype == "INT")
{
switch (res_meta->getColumnDisplaySize(i + 1))
{
case 64:
break;
case 32:
break;
default:
break;
}
}
}
}
catch(sql::SQLException &e){}
访问RDBMS时,得到的ResultSet通常是面向行的。也就是说,无论何时调用ResultSet::next(),光标都会移动到下一行。这就是为什么你的循环
for (int i = 0; i < columncount; i++)
{
while (res->next())
{
...
}
}
只显示第一个属性。
通常情况下,你会切换内外循环,比如
while (res->next())
{
for (int i = 0; i < columncount; i++)
{
...
}
}
但是,如果您确实需要一次访问一列,则必须检查ResultSet是否允许您将游标重置到第一行。如果没有,则必须缓存数据,或者反复发出相同的SQL查询。
相关文章:
- 有什么方法可以遍历结构吗
- 在循环中按顺序遍历成员变量
- 遍历模板参数
- 在遍历处理程序的向量时注册和注销处理程序
- C++RapidXml-使用first_node()遍历以修改XML文件中节点的值
- 遍历并行数组以确定C++中的最大数字
- 遍历顺序由 std::文件系统directory_iterator给出
- 遍历链表时的无限循环
- 遍历unordered_map向量
- 从预序遍历构造 bst 的 c++ 和 python 解决方案之间的区别
- C++声明双链表,使用两个 for 循环双向遍历列表并打印
- 如何正确地推回然后遍历堆中对象的向量?
- 遍历二维数组的所有子数组
- 如何在可变参数模板函数中遍历可变参数元组?
- 避免在遍历 IShellItemArray 时出现代码重复
- 使用两种不同的方法遍历 Vector 的结果不一致
- 我正在尝试遍历 20x20 网格并计算产品,但总是得到不正确的结果。你能帮忙发现我的错误吗?
- 迭代器遍历一对向量,并使用std::copy打印结果
- 循环遍历结果集
- 如何循环遍历std::regex_search中的结果?