#include // for printf
#include // main SQLAPI++ header
int main(int argc, char* argv[])
{
SAConnection con; // connection object
SACommand cmd; // command object
try
{
// connect to database (Oracle in our example)
con.Connect(_TSA("test"), _TSA("tester"), _TSA("tester"), SA_Oracle_Client);
// associate a command with connection
cmd.setConnection(&con);
// Insert 2 rows
cmd.setCommandText(
_TSA("Insert into test_tbl(fid, fvarchar20) values(:1, :2)"));
// use first method of binding - param assignment
cmd.Param(1).setAsLong() = 2;
cmd.Param(2).setAsString() = _TSA("Some string (2)");
// Insert first row
cmd.Execute();
// use second method of binding - stream binding
cmd << (long)3 << _TSA("Some string (3)");
// Insert second row
cmd.Execute();
// commit changes on success
con.Commit();
printf("Input parameters bound, rows inserted!\n");
}
catch(SAException &x)
{
// SAConnection::Rollback()
// can also throw an exception
// (if a network error for example),
// we will be ready
try
{
// on error rollback changes
con.Rollback();
}
catch(SAException &)
{
}
// print error message
printf("%s\n", x.ErrText().GetMultiByteChars());
}
return 0;
}