Monday, June 21, 2010

Recentemente eu resolvi um problema usando CGI.
Faz um certo tempo que ninguém mais utiliza C++ CGI... Foi interessante.

Separei um código simples e de fácil uso com banco de dados Oracle.
O executável irá receber uma variável GET, tal que:

http://server/cgi-bin/oraclecgi.exe?id=2345

Isso irá buscar o resultado no BD e devolvê-lo no browser.

#include <Core/Core.h>
#include <Oracle/Oracle8.h>


using namespace Upp;

CONSOLE_APP_MAIN
{
 Oracle8 oracle;
 String raw_get = getenv("QUERY_STRING");
 String id_code;
 id_code = raw_get.Mid(3, 12);
 oracle.Open("user/pwd@INFOREAM:1521/sid", false, NULL);
 Sql sql(oracle);
 sql.Execute("SELECT ADD_TEXT FROM SOMETABLE WHERE ADD_ENTITY = 'TASK' AND ADD_CODE = '" + id_code + "'");
 sql.Fetch();
 Cout() << "Content-type: text/html\n\n";
 Cout() << "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\"/></head>";
        Cout() << "<body>"; 
 Cout() <<"<pre style=\"font-family:verdana;size:10\">" + sql[0].ToString() + "</pre>";
 Cout() << "</body></html>";
}