// Version: 2020.10.31 16:32:23 // File: T_PDI_ZONEDBAX.cpp #include #include "T_PDI_ZONEDBAX.h" #include "T_PDI_ZONE.h" #define NORECORD 100 using namespace log4cplus; extern iDA::Connection cn; extern char sqlErrMsg[4000]; #define DB_EXECUTE() try{ cmd.Execute();}catch( iDA::Exception &e){ dbSqlCode=-1;strcpy( sqlErrMsg,e.ErrMsg().c_str());return sqlErrMsg;} #define DB_UPDEXECUTE() try{ updatecmd.Execute();}catch( iDA::Exception &e){ dbSqlCode=-1;strcpy( sqlErrMsg,e.ErrMsg().c_str());return sqlErrMsg;} #define DB_RDEXECUTE() try{ readcmd.Execute();}catch( iDA::Exception &e){ dbSqlCode=-1;strcpy( sqlErrMsg,e.ErrMsg().c_str());return sqlErrMsg;} #define DB_INSEXECUTE() try{ insertcmd.Execute();}catch( iDA::Exception &e){ dbSqlCode=-1;strcpy( sqlErrMsg,e.ErrMsg().c_str());return sqlErrMsg;} #define DB_FETCH() try{ if( !readcmd.FetchNext()){ dbSqlCode = NORECORD;strcpy( sqlErrMsg, "No record found");return sqlErrMsg;}}catch( iDA::Exception &e){ dbSqlCode=-1;strcpy( sqlErrMsg,e.ErrMsg().c_str());return sqlErrMsg;} #define DB_UPDAFFECTED() if( updatecmd.RowsAffected() <= 0){ strcpy( sqlErrMsg, "No record affected");return sqlErrMsg;} // // Declare DB Hostvariables // #define OPENED 1 #define CLOSED 2 /* ****************************************************************************** */ /* */ /* define DB */ /* Hostvariables */ /* */ /* ****************************************************************************** */ static char db_entId[50+1]; static int db_zone; static char db_steelgrade[20+1]; static short db_steelgradeZi; static char db_alloycode[20+1]; static short db_alloycodeZi; static double db_thick; static short db_thickZi; static double db_width; static short db_widthZi; static char db_stime[27]; static short db_stimeZi; static char db_etime[27]; static short db_etimeZi; static long rowCnt; // Host arguments for Primary key static char k_db_entId[50+1]; static int k_db_zone; // // constructor // T_PDI_ZONEDBAX::T_PDI_ZONEDBAX() { } // // destructor // T_PDI_ZONEDBAX::~T_PDI_ZONEDBAX() { } char* T_PDI_ZONEDBAX::execute(const char* sql , long* count ){ dbSqlCode = 0; cmd.SetConnection( &cn); cmd.SetCommandText( sql); DB_EXECUTE(); if( count != NULL) { *count = cmd.RowsAffected(); } return ( NULL ); } char* T_PDI_ZONEDBAX::dbCommit(){ dbSqlCode = 0; try{ cn.Commit(); }catch( iDA::Exception &e) { dbSqlCode = -1; strcpy( sqlErrMsg,e.ErrMsg().c_str()); return sqlErrMsg; } return ( NULL ); } char* T_PDI_ZONEDBAX::dbRollback(){ dbSqlCode = 0; try{ cn.Rollback(); }catch( iDA::Exception &e) { dbSqlCode = -1; strcpy( sqlErrMsg,e.ErrMsg().c_str()); return sqlErrMsg; } return ( NULL ); } // // private methode copyDB2Attribute // void T_PDI_ZONEDBAX::copyDB2Attribute( T_PDI_ZONE &dbObj ){ dbObj.set_entId((char*)db_entId); dbObj.set_zone((long)db_zone); dbObj.set_steelgrade((char*)db_steelgrade); dbObj.set_steelgradeZi((short)db_steelgradeZi); dbObj.set_alloycode((char*)db_alloycode); dbObj.set_alloycodeZi((short)db_alloycodeZi); dbObj.set_thick((double)db_thick); dbObj.set_thickZi((short)db_thickZi); dbObj.set_width((double)db_width); dbObj.set_widthZi((short)db_widthZi); dbObj.set_stime((char*)db_stime); dbObj.set_stimeZi((short)db_stimeZi); dbObj.set_etime((char*)db_etime); dbObj.set_etimeZi((short)db_etimeZi); } // end of methode // // private methode copyAttribute2DB // void T_PDI_ZONEDBAX::copyAttribute2DB( T_PDI_ZONE &dbObj ){ if (strlen(dbObj.entId()) < sizeof(db_entId)){ strncpy ((char*)db_entId, dbObj.entId(), sizeof(db_entId)); } db_zone = dbObj.zone(); if (strlen(dbObj.steelgrade()) < sizeof(db_steelgrade)){ strncpy ((char*)db_steelgrade, dbObj.steelgrade(), sizeof(db_steelgrade)); } db_steelgradeZi = dbObj.steelgradeZi(); if (strlen(dbObj.alloycode()) < sizeof(db_alloycode)){ strncpy ((char*)db_alloycode, dbObj.alloycode(), sizeof(db_alloycode)); } db_alloycodeZi = dbObj.alloycodeZi(); db_thick = dbObj.thick(); db_thickZi = dbObj.thickZi(); db_width = dbObj.width(); db_widthZi = dbObj.widthZi(); if (strlen(dbObj.stime()) < sizeof(db_stime)){ strncpy ((char*)db_stime, dbObj.stime(), sizeof(db_stime)); } db_stimeZi = dbObj.stimeZi(); if (strlen(dbObj.etime()) < sizeof(db_etime)){ strncpy ((char*)db_etime, dbObj.etime(), sizeof(db_etime)); } db_etimeZi = dbObj.etimeZi(); } // end of methode // // private methode copyKey2Host // void T_PDI_ZONEDBAX::copyKey2Host( T_PDI_ZONE &dbObj ){ if (strlen(dbObj.k_entId()) < sizeof(k_db_entId)){ strncpy ((char*)k_db_entId, dbObj.k_entId(), sizeof(k_db_entId)); } k_db_zone = dbObj.k_zone(); } // end of methode // // private methode copyHost2Key // void T_PDI_ZONEDBAX::copyHost2Key( T_PDI_ZONE &dbObj ){ dbObj.set_k_entId((char*)db_entId); dbObj.set_k_zone((long)db_zone); } // end of methode // // public methode readDB // char* T_PDI_ZONEDBAX::readDB(T_PDI_ZONE &dbObj ){ copyKey2Host( dbObj ); ostringstream ostr; dbSqlCode = 0; ostr << "SELECT "; // all columns ostr << "entId"; ostr << ",zone"; ostr << ",steelgrade"; ostr << ",alloycode"; ostr << ",thick"; ostr << ",width"; ostr << ",TO_CHAR(stime, 'YYYYMMDDHH24MISS')"; ostr << ",TO_CHAR(etime, 'YYYYMMDDHH24MISS')"; ostr << " FROM T_PDI_ZONE WHERE "; // where ostr << "entId = '" << k_db_entId << "'"; ostr << " AND zone = " << k_db_zone; readcmd.SetConnection(&cn); readcmd.SetCommandText( ostr.str()); DB_RDEXECUTE(); DB_FETCH(); // Primary Keys strncpy( db_entId, readcmd.Field(1).AsString().c_str(), sizeof( db_entId)); // Primary Keys db_zone = ( long)readcmd.Field(2).AsLong(); // Normal columns // steelgrade if( readcmd.Field(3).IsNull() == false) { db_steelgradeZi = 0; strncpy( db_steelgrade, readcmd.Field(3).AsString().c_str(), sizeof( db_steelgrade)); } else { db_steelgradeZi = -1; memset( db_steelgrade, 0x00, sizeof( db_steelgrade)); } // Normal columns // alloycode if( readcmd.Field(4).IsNull() == false) { db_alloycodeZi = 0; strncpy( db_alloycode, readcmd.Field(4).AsString().c_str(), sizeof( db_alloycode)); } else { db_alloycodeZi = -1; memset( db_alloycode, 0x00, sizeof( db_alloycode)); } // Normal columns // thick if( readcmd.Field(5).IsNull() == false) { db_thickZi = 0; db_thick = ( double)readcmd.Field(5).AsDouble(); } else { db_thickZi = -1; db_thick = 0; } // Normal columns // width if( readcmd.Field(6).IsNull() == false) { db_widthZi = 0; db_width = ( double)readcmd.Field(6).AsDouble(); } else { db_widthZi = -1; db_width = 0; } // Normal columns // stime if( readcmd.Field(7).IsNull() == false) { db_stimeZi = 0; strncpy( db_stime, readcmd.Field(7).AsString().c_str(), sizeof( db_stime)); } else { db_stimeZi = -1; memset( db_stime, 0x00, sizeof( db_stime)); } // Normal columns // etime if( readcmd.Field(8).IsNull() == false) { db_etimeZi = 0; strncpy( db_etime, readcmd.Field(8).AsString().c_str(), sizeof( db_etime)); } else { db_etimeZi = -1; memset( db_etime, 0x00, sizeof( db_etime)); } // copy host variables into Class attributes copyDB2Attribute( dbObj ); return ( NULL ); } // end of methode // // public methode updateDB // char* T_PDI_ZONEDBAX::updateDB(T_PDI_ZONE &dbObj ){ copyKey2Host( dbObj ); copyAttribute2DB( dbObj ); dbSqlCode = 0; ostringstream ostr; ostr << "UPDATE T_PDI_ZONE SET "; // Material Keys & Primary Keys ostr << "entId='" << db_entId << "'"; ostr << ", zone=" << db_zone; // Normal column if( db_steelgradeZi != -1) ostr << ", steelgrade = '" << db_steelgrade << "'"; else ostr<<",steelgrade = NULL"; if( db_alloycodeZi != -1) ostr << ", alloycode = '" << db_alloycode << "'"; else ostr<<",alloycode = NULL"; if( db_thickZi != -1) ostr << ", thick = " << db_thick; else ostr<<",thick = NULL"; if( db_widthZi != -1) ostr << ", width = " << db_width; else ostr<<",width = NULL"; if( db_stimeZi != -1) ostr << ", stime = TO_DATE('" << db_stime << "','YYYYMMDDHH24MISS')"; else ostr<<",stime = NULL"; if( db_etimeZi != -1) ostr << ", etime = TO_DATE('" << db_etime << "','YYYYMMDDHH24MISS')"; else ostr<<",etime = NULL"; // where ostr << " WHERE "; ostr << "entId = '" << db_entId << "'"; ostr << " AND zone = " << db_zone; updatecmd.SetConnection(&cn); updatecmd.SetCommandText( ostr.str()); DB_UPDEXECUTE(); DB_UPDAFFECTED(); return ( NULL ); } // end of methode // // public methode insertDB // char* T_PDI_ZONEDBAX::insertDB(T_PDI_ZONE &dbObj ){ copyAttribute2DB( dbObj ); dbSqlCode = 0; m_sql = "INSERT INTO T_PDI_ZONE VALUES( :1, :2, :3, :4, :5, :6, :7, :8)"; insertcmd.SetConnection(&cn); insertcmd.SetCommandText( m_sql); // Primary columns insertcmd.Param(1) = ( char *)db_entId; // Primary columns insertcmd.Param(2) = ( long)db_zone; // Normal columns if( db_steelgradeZi != -1) insertcmd.Param(3) = ( char *)db_steelgrade; else insertcmd.Param(3).SetAsNull(); // Normal columns if( db_alloycodeZi != -1) insertcmd.Param(4) = ( char *)db_alloycode; else insertcmd.Param(4).SetAsNull(); // Normal columns if( db_thickZi != -1) insertcmd.Param(5) = ( double)db_thick; else insertcmd.Param(5).SetAsNull(); // Normal columns if( db_widthZi != -1) insertcmd.Param(6) = ( double)db_width; else insertcmd.Param(6).SetAsNull(); // Normal columns if( db_stimeZi != -1) insertcmd.Param(7) = DateTime( db_stime); else insertcmd.Param(7).SetAsNull(); // Normal columns if( db_etimeZi != -1) insertcmd.Param(8) = DateTime( db_etime); else insertcmd.Param(8).SetAsNull(); DB_INSEXECUTE(); return ( NULL ); } // end of methode // // public methode deleteDB // char* T_PDI_ZONEDBAX::deleteDB(T_PDI_ZONE &dbObj ){ ostringstream ostr; dbSqlCode = 0; copyKey2Host( dbObj ); ostr << "DELETE FROM T_PDI_ZONE WHERE "; ostr << "entId = '" << db_entId << "'"; ostr << " AND zone = " << db_zone; cmd.SetConnection( &cn); cmd.SetCommandText( ostr.str()); DB_EXECUTE(); return ( NULL ); } // end of methode // // public methode deleteDB delete in case of a where clause // char* T_PDI_ZONEDBAX::deleteDB(const char* where , long* count){ dbSqlCode = 0; *(count) = -1L; m_sql = "DELETE FROM T_PDI_ZONE "; if ( where != (char*)NULL ) { m_sql.append( where ); } cmd.SetConnection( &cn); cmd.SetCommandText( m_sql); DB_EXECUTE(); if( count != NULL){ *count = cmd.RowsAffected(); } return ( NULL ); } // end of methode // // public methode openSetDB // char* T_PDI_ZONEDBAX::openSetDB(const char* where , const char* order){ dbSqlCode = 0; m_sql = "SELECT entId, zone, steelgrade, alloycode, thick, width, TO_CHAR(stime, 'YYYYMMDDHH24MISS'), TO_CHAR(etime, 'YYYYMMDDHH24MISS') FROM T_PDI_ZONE "; if ( where != (char*)NULL ) { m_sql.append( where); m_sql.append( " "); } if (order != (char*)NULL){ m_sql.append( order); } readcmd.SetConnection(&cn); readcmd.SetCommandText( m_sql); DB_RDEXECUTE(); return ( NULL ); } // end of methode // // public methode getSetDB // char* T_PDI_ZONEDBAX::getSetDB( T_PDI_ZONE &dbObj ){ dbSqlCode = 0; DB_FETCH(); // Primary columns strncpy( db_entId, readcmd.Field(1).AsString().c_str(), sizeof( db_entId)); // Primary columns db_zone = ( long)readcmd.Field(2).AsLong(); // Normal columns // steelgrade if( readcmd.Field(3).IsNull() == false) { db_steelgradeZi = 0; strncpy( db_steelgrade, readcmd.Field(3).AsString().c_str(), sizeof( db_steelgrade)); } else { db_steelgradeZi = -1; memset( db_steelgrade, 0x00, sizeof( db_steelgrade)); } // Normal columns // alloycode if( readcmd.Field(4).IsNull() == false) { db_alloycodeZi = 0; strncpy( db_alloycode, readcmd.Field(4).AsString().c_str(), sizeof( db_alloycode)); } else { db_alloycodeZi = -1; memset( db_alloycode, 0x00, sizeof( db_alloycode)); } // Normal columns // thick if( readcmd.Field(5).IsNull() == false) { db_thickZi = 0; db_thick = ( double)readcmd.Field(5).AsDouble(); } else { db_thickZi = -1; db_thick = 0; } // Normal columns // width if( readcmd.Field(6).IsNull() == false) { db_widthZi = 0; db_width = ( double)readcmd.Field(6).AsDouble(); } else { db_widthZi = -1; db_width = 0; } // Normal columns // stime if( readcmd.Field(7).IsNull() == false) { db_stimeZi = 0; strncpy( db_stime, readcmd.Field(7).AsString().c_str(), sizeof( db_stime)); } else { db_stimeZi = -1; memset( db_stime, 0x00, sizeof( db_stime)); } // Normal columns // etime if( readcmd.Field(8).IsNull() == false) { db_etimeZi = 0; strncpy( db_etime, readcmd.Field(8).AsString().c_str(), sizeof( db_etime)); } else { db_etimeZi = -1; memset( db_etime, 0x00, sizeof( db_etime)); } copyDB2Attribute( dbObj ); copyHost2Key( dbObj ); return ( NULL ); } // end of methode // // public methode closeSetDB // char* T_PDI_ZONEDBAX::closeSetDB(){ dbSqlCode = 0; return ( NULL ); } // end of methode // // public methode countDB // char* T_PDI_ZONEDBAX::countDB(const char* where , long* count){ dbSqlCode = 0; *(count) = -1L; m_sql = "SELECT count(*) FROM T_PDI_ZONE "; if ( where != (char*)NULL ) { m_sql.append( where); } readcmd.SetConnection(&cn); readcmd.SetCommandText( m_sql); DB_RDEXECUTE(); DB_FETCH(); *count = ( long)readcmd.Field(1).AsLong(); return ( NULL ); } // end of methode