I develop a small C++
tool which fill a xml from an SQL result. I use the C ODBC
libraries to connect to the SQL server. This function get the records:
...
char result[5][64]; //More flexible
...
for (i = 0; i < columns; i++) {
SQLBindCol(stmt, i + 1, SQL_C_CHAR, result[i], sizeof(result[i]), &indicator[i]);
}
while (SQL_SUCCEEDED(SQLFetch(stmt))) {
for (i = 0; i < columns; i++) {
if (indicator[ i ] == SQL_NULL_DATA) {
cout << format("Column %1% : NULL") % i << endl;
}
else {
cout << format("Column %1% : %2%") % i % result[i] << endl;
}
}
}
I save the result in the result char array
. I would like to do this in a more dynamically way.. To be save if there are more records or the values are longer. I know about malloc
in C
and new
in C++
, but how could I use this in my case? Any idea? Should I switch to something line tiodbc
?
First count the number of records which are coming from the database then use the malloc to allocate the memory of that size.I think it would me more dynamic