私は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){}
あなたのコードをデバッグしようとしましたが、columncountを見てください – duDE
外側の 'for'で' res'をリセットしないので、結果が1つだけの場合はwhileが一度実行され、その後はforループの繰り返しそれは何もしません。 –