int mysqlapi::phExecute(bool isCommit) { if(m_connect.isConnect()<0) return -1; now_operation = statement; if(inSetSql(m_sql)<0) return -1; if(m_cursor.allocateParmBindStruct()<0) { m_cursor.getStmtErrInfo(); m_cursor.closeCur(); phfree(); return -1; } for(int i=0;i<32;i++) { if(!m_bin_fld_val_list[i].data) break; switch (m_bin_fld_val_list[i].type) { case SQL_INT: m_cursor.bindPos(i,(char*)m_bin_fld_val_list[i].data,MYSQL_TYPE_LONG,sizeof(int)); break; case SQL_LONG: m_cursor.bindPos(i,(char*)m_bin_fld_val_list[i].data,MYSQL_TYPE_LONGLONG,sizeof(long long)); break; case SQL_STRING: m_bin_fld_val_list[i].data_len = strlen((const char*)m_bin_fld_val_list[i].data); m_cursor.bindPos(i,(char*)m_bin_fld_val_list[i].data,MYSQL_TYPE_STRING,m_bin_fld_val_list[i].len,&m_bin_fld_val_list[i].data_len); break; case SQL_BINARY: m_cursor.bindPos(i,(char*)m_bin_fld_val_list[i].data,MYSQL_TYPE_BLOB,m_bin_fld_val_list[i].len); break; default: m_cursor.closeCur(); phfree(); return -1; } } if(m_cursor.bindParm() != 0) { m_cursor.getStmtErrInfo(); m_cursor.closeCur(); phfree(); return -1; } if(inExec(isCommit)<0) return -1; phfree(); return 0; }
void insExec( instruc_t* inp ) { switch( inp->iop ) { case opIN: inExec(); break; case opOUT: outExec(); break; case opADD: addExec(); break; case opSUB: subExec(); break; case opMUL: mulExec(); break; case opDIV: divExec(); break; case opLD: ldExec(); break; case opST: stExec(); break; case opLDA: ldaExec(); break; case opLDC: ldcExec(); break; case opJMP: jmpExec(); break; case opJLT: jltExec(); break; case opJLE: jleExec(); break; case opJGT: jgtExec(); break; case opJGE: jgeExec(); break; case opJEQ: jeqExec(); break; case opJNE: jneExec(); break; } }