C++Builder PostgreSQL Text[]カラムの読み込み 要素数不明の場合
TarrayField の Fields や FieldValues を使うという情報があったが、なぜか先頭要素しか取得できなかった。
FieldByName() で取得した TField を TDataSetField へキャストし、
TDataSetField の NestedDataSet->Eof を見ながら Next() していく方法でうまくいった。
XXX_array という配列カラムがある場合、
TFDConnection *con; TFDQuery *qry; /*---- 設定省略 ----*/ qry->open("select a, b, c, XXX_array from t_abcd;"); while (!db->qry->Eof){ auto colArray = (TDataSetField*) qry->FieldByName("XXX_array"); while(!colArray->NestedDataSet->Eof){ auto str = colArray->NestedDataSet->Fields->Fields[0]->AsString; if(str != NULL && str.Trim() != "") vecXXX.push_back(str); colArray->NestedDataSet->Next();