SQL Server desde C

Gus
10 de Noviembre del 2004
Hola a todos,
estoy haciendo un programa en C que reciba un select y lo ejecute contra el SQL Server, recuperando el resultado para devolverlo, pero no consigo que funcione, y creo haber seguido bien los pasos encontrados en la documentacion. Lo que hago es esto

retcode = SQLExecDirect((*db2).dbp.msdata.hStmt,(SQLCHAR *)transactions,SQL_NTS);
if ((retcode == SQL_SUCCESS) || (retcode == SQL_SUCCESS_WITH_INFO))
{
bucle = 1;
while (1)
{
retcode = SQLFetch((*db2).dbp.msdata.hStmt);
if (retcode == SQL_ERROR || retcode == SQL_SUCCESS_WITH_INFO)
printf("n ERROR AL RECOGER DATOS n");
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
for (i=1;i<=contador;i++)
{
SQLGetData ((*db2).dbp.msdata.hStmt,i,SQL_C_CHAR,(void *)szColData[i],1024,&cbColData[i]);
Append_withSpace(&mi_resultado,szColData);
}
Append_withSpace(&mi_resultado," ||| ");
}
else
break;
}
}

Como veis hay una variable bucle que toma valor 1, la uso para saber que he accedido al interior del bucle, y en caso de que no sea asi pues devolver mensaje de error, que es el mensaje que me devuelve, como
si el resultado del SQLExecDirect fuera fallo.
¿Me he dejado algo?¿Alguien sabe que estoy haciendo mal?
Si quereis una copia entera de la funcion, avisadme y os la mando, que aqui no se va a ver muy bien.
Muchas gracias!