/
Puzzman
/
setPointMap
Обзор
Документация
Войти
/
Puzzman
/
setPointMap
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
scripts/libs/classes/DataBase.ctl
130 строк
3 KB
Sergey
refactor
12 май 2025, 16:11
12 май 2025, 16:11
8c27993
Код
Авторство
О чём код?
#uses "CtrlADO" #uses "sqlConnect" class DataBase { private dbRecordset rs; private dbConnection conn; private dbCommand cmd; private int rc; private int errCnt, errNo, errNa; private string errDesc, errState; string server_, uid_, pwd_, port_, dataBasename_; //------------------------------------------------------------------------------ // Constructor. public DataBase(bool remote=false) { server_ = SERVER; uid_ = UID; pwd_ = PWD; port_ = PORT; dataBasename_ = DATABASENAME; if (remote) { server_ = SERVER_RE; uid_ = UID_RE; pwd_ = PWD_RE; port_ = PORT_RE; dataBasename_ = DATABASENAME_RE; } } // Destructor. ~DataBase() {} private openConnection() { rc = dbOpenConnection("driver=QPSQL7;server=" + server_ + ";uid=" + uid_ +";pwd=" + pwd_ + ";database=" + DATABASENAME + ";port=" + port_ + ";", conn); if (rc != 0) { dbGetError(conn, errCnt, errNo, errNa, errDesc, errState); DebugN("Error", rc, conn, errCnt, errNo, errNa, errDesc, errState); dbCloseConnection(conn); } } private closeConnection() { dbCloseConnection(conn); } public dyn_dyn_anytype getData(string sql) { DebugN(__FUNCTION__, sql); int err; dyn_dyn_anytype fld; dyn_anytype result; if (strlen(sql) == 0) {return fld;} openConnection(); if (!rc) { err = dbOpenRecordset(conn, sql, rs); if (!err) { int count = 1; while (!rc && !dbEOF(rs)) { rc = dbGetRecord(rs, fld[count]); count += 1; rc = dbMoveNext(rs); } } dbCloseRecordset(rs); } else { dbGetError(conn, errCnt, errNo, errNa, errDesc, errState); DebugN("Error", rc, conn, errCnt, errNo, errNa, errDesc, errState, sql); } closeConnection(); return fld; } public void setData(string& sql) { // DebugN(__FUNCTION__, sql); openConnection(); if (!rc) { rc = dbBeginTransaction(conn); //Запуск транзакции if (!rc) { rc = dbStartCommand(conn, sql, cmd); if (!rc) { rc = dbExecuteCommand(cmd); // Выполнение dbFinishCommand(cmd); // Конец команды } else { dbGetError(conn, errCnt, errNo, errNa, errDesc, errState); DebugN("Error", rc, conn, errCnt, errNo, errNa, errDesc, errState); } if (!rc) { rc = dbCommitTransaction(conn); // Внесены изменения в БД } else { rc = dbRollbackTransaction(conn); // Изменения в БД отклонены } } else { dbGetError(conn, errCnt, errNo, errNa, errDesc, errState); DebugN("Error", rc, conn, errCnt, errNo, errNa, errDesc, errState); } } else { dbGetError(conn, errCnt, errNo, errNa, errDesc, errState); DebugN("Error", rc, conn, errCnt, errNo, errNa, errDesc, errState); } closeConnection(); } };