int main() { otl_connect::otl_initialize(); // initialize ODBC environment try{ main_db.rlogon("scott/tigger@freetds_sybsql"); // connect to ODBC main_db.auto_commit_off(); otl_cursor::direct_exec ( main_db, "drop table test_tab", otl_exception::disabled // disable OTL exceptions ); // drop table otl_cursor::direct_exec ( main_db, "create table test_tab(f1 int, f2 varchar(30))" ); // create table insert(); // insert records into table // opening a secondary connect secondary_db.rlogon (main_db.get_connect_struct().get_henv(), // environment handle to the main database connect main_db.get_connect_struct().get_hdbc() // database connect handle to the main database connect ); // connect to ODBC select(); // select records from table // releasing the secondary connect secondary_db.logoff(); }catch(otl_exception& p){ // intercept OTL exceptions cerr<<p.msg<<endl; // print out error message cerr<<p.stm_text<<endl; // print out SQL that caused the error cerr<<p.sqlstate<<endl; // print out SQLSTATE message cerr<<p.var_info<<endl; // print out the variable that caused the error } main_db.logoff(); // disconnect from ODBC return 0; }
void select3() { otl_stream s; s.set_all_column_types(otl_all_num2str|otl_all_date2str); // map all numeric and date/time output columns to strings for simplicity. db.auto_commit_on(); // setting database connect auto-commit to ON db.get_connect_struct().get_henv(); s.open(100, // buffer size "$SQLColumns $1:'t1'", // get a list of all columns of table // "test_tab" that belongs to schema "dbo", // catalog "sybsql" db // connect object ); otl_column_desc* desc; int desc_len; desc=s.describe_select(desc_len); // describe the structure of the output columns of the result set. for(int col_num=0;col_num<desc_len;++col_num){ cout<<desc[col_num].name<<desc[col_num].dbtype<<"=NULL "; } int rpc=0; while(!s.eof()){ ++rpc; char str[512]; cout<<"ROW#"<<rpc<<" "; for(int col_num=0;col_num<desc_len;++col_num){ s>>str; if(s.is_null()) cout<<desc[col_num].name<<"=NULL "; else cout<<desc[col_num].name<<"="<<str<<" "; } cout<<endl; } }