Esempio n. 1
0
        private bool CheckConnection()
        {
            bool connected = false;

            if (!string.IsNullOrEmpty(currentlySelected))
            {
                Config.ConfigFileName = workingFile;
                GxContext context = new GxContext();

                DataStoreUtil.LoadDataStores(context);
                IGxDataStore dsDefault = context.GetDataStore(currentlySelected);
                try
                {
                    dsDefault.Connection.Open();
                }
                catch (Exception e)
                {
                    MessageBox.Show(Messages.ConnectionError + " - " + e.Message, Messages.ConnectionErrorTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                if (dsDefault.Connection.Opened)
                {
                    MessageBox.Show(Messages.ConnectionOK, Messages.ConnectionOKTitle, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    connected = true;
                }
            }
            return(connected);
        }
Esempio n. 2
0
        public void ExecBeforeReorg()
        {
            ArrayList    stmts     = ParseStmtFile(ReorgScriptType.Before);
            IGxDataStore dsDefault = context.GetDataStore("Default");

            foreach (string stmt in stmts)
            {
                AddMsg(GXResourceManager.GetMessage("GXM_executing", new object[] { stmt }), null);
                GxCommand RGZ = new GxCommand(dsDefault.Db, stmt, dsDefault, 0, true, false, null);
                RGZ.ExecuteStmt();
                RGZ.Drop();
            }
        }
        public void createCursor(IGxDataStore ds, GxErrorHandler errorHandler)
        {
            if (_state >= 2)

            {
                return;
            }
            _stmt                 = (_staticParameters == null)? _stmt : String.Format(_stmt, _staticParameters);
            _gxDbCommand          = new GxCommand(ds.Db, _stmt, _updatable, ds, "", _name, TTL, hasNested, isForFirst, errorHandler, _batchSize);
            _gxDbCommand.IsCursor = true;
            if (_blockSize > 0)
            {
                _gxDbCommand.FetchSize = Convert.ToUInt16(_blockSize);
            }
            bindParms(_parmBinds);
            _fldGetter             = new GXFatFieldGetter(_gxDbCommand);
            _fldSetter             = new GXFatFieldSetter(_gxDbCommand);
            _state                 = 2;
            _gxDbCommand.ErrorMask = _errMask;
        }
Esempio n. 4
0
        private void commitDataStore(IGxDataStore ds, String auditObjectName)
        {
            GXLogging.Debug(log, "DataStoreProvider commit auditObjectName:" + auditObjectName);
            GxCommand cmd = new GxCommand(ds.Db, "commit", ds, 0, false, true, _errorHandler);

            cmd.ErrorMask = GxErrorMask.GX_NOMASK;
            try
            {
                ds.Commit();
            }
            catch (Exception dbEx)
            {
                //If commit fails it should not retry, it makes no sense because it will no longer be possible. just close the existing connection.
                int status           = 0;
                GxADODataException e = new GxADODataException(dbEx);
                bool retry           = false;
                int  retryCount      = 0;
                bool pe = ds.Connection.DataRecord.ProcessError(e.DBMSErrorCode, e.ErrorInfo, cmd.ErrorMask, ds.Connection, ref status, ref retry, retryCount);
                GXLogging.Error(log, "Commit Transaction Error", e);
                retryCount++;
                cmd.processErrorHandler(status, e.DBMSErrorCode, e.SqlState, e.ErrorInfo, cmd.ErrorMask, "FETCH", ref pe, ref retry);
                if (!pe)
                {
                    try
                    {
                        ds.Connection.Close();
                        if (retry)
                        {
                            ds.Connection.Open();
                        }
                    }
                    catch (Exception ex)
                    {
                        GXLogging.Error(log, "beginTransaction in commit transaction failed", ex);
                        throw (new GxADODataException(e.ToString(), e));
                    }
                }
            }
            cmd.Dispose();
        }
Esempio n. 5
0
 public DataStoreProvider(IGxContext context, IDataStoreHelper dataStoreHelper, Object[][] cursorParms)
 {
     GXLogging.Debug(log, "Start DataStoreProvider.Ctr, Parameters: handle '" + context.handle + "', dataStoreHelper:" + dataStoreHelper.GetType());
     _dataStoreHelper = dataStoreHelper;
     _context         = context;
     _ds = context.GetDataStore(dataStoreHelper.getDataStoreName());
     if (_ds == null)
     {
         _ds = new GxDataStore(new GxSqlServer(), dataStoreHelper.getDataStoreName(), context);
         context.AddDataStore(_ds);
         GXLogging.Error(log, dataStoreHelper.GetType() + " Datastore " + dataStoreHelper.getDataStoreName() + " not found in app config");
     }
     _ds.Handle   = context.handle;
     _cursor      = dataStoreHelper.getCursors();
     results      = cursorParms;
     errorBuffers = new Dictionary <int, Object[]>();
     if (Preferences.Instrumented)
     {
         wmiDataStoreProvider = WMIDataStoreProviders.Instance().AddDataStoreProvider(dataStoreHelper.GetType().ToString());
     }
     dataStoreRequestCount++;
 }
Esempio n. 6
0
        private void rollbackDataStore(IGxDataStore ds, String auditObjectName)
        {
            GxCommand cmd = new GxCommand(ds.Db, "rollback", ds, 0, false, true, _errorHandler);

            cmd.ErrorMask = GxErrorMask.GX_NOMASK;
            try
            {
                ds.Rollback();
            }
            catch (Exception dbEx)
            {
                int status           = 0;
                GxADODataException e = new GxADODataException(dbEx);
                bool retry           = false;
                int  retryCount      = 0;
                bool pe = ds.Connection.DataRecord.ProcessError(e.DBMSErrorCode, e.ErrorInfo, cmd.ErrorMask, ds.Connection, ref status, ref retry, retryCount);
                GXLogging.Error(log, "Rollback Transaction Error", e);
                retryCount++;
                cmd.processErrorHandler(status, e.DBMSErrorCode, e.SqlState, e.ErrorInfo, cmd.ErrorMask, "FETCH", ref pe, ref retry);
                if (!pe)
                {
                    try
                    {
                        ds.Connection.Close();
                        if (retry)
                        {
                            ds.Connection.Open();
                        }
                    }
                    catch (Exception ex)
                    {
                        GXLogging.Error(log, "beginTransaction in Rollback transaction failed", ex);
                        throw (new GxADODataException(e.ToString(), e));
                    }
                }
            }
            cmd.Dispose();
        }
 public virtual short[] preExecute(int cursorNum, IDataStoreProviderBase connectionProvider, IGxDataStore ds)
 {
     _status = 0;
     return(null);
 }
        public override short[] preExecute(int cursorNum, IDataStoreProviderBase connectionProvider, IGxDataStore ds)
        {
            base.preExecute(cursorNum, connectionProvider, ds);
            short[] parmHasValue = null;

            if (dynamicStmt)
            {
                Object[] dynStmt = parent.getDynamicStatement(cursorNum, connectionProvider.context, connectionProvider.getDynConstraints());
                if (dynStmt == null && parent is DataStoreHelperBase)
                {
                    dynStmt = ((DataStoreHelperBase)parent).getDynamicStatement(cursorNum, connectionProvider.getDynConstraints());
                }
                _stmt = (string)dynStmt[0];

                List <object> newParmBinds = new List <object>();
                parmHasValue = (short[])dynStmt[1];
                for (int i = 0; i < _parmBinds.Length; i++)
                {
                    if (parmHasValue[i] == 0)
                    {
                        newParmBinds.Add(_parmBinds[i]);
                    }
                }
                base.bindParms(newParmBinds.ToArray());
                GXLogging.Debug(log, "ForEachCursor.preExecute, DynamicStatement: " + _stmt);
                _gxDbCommand.CommandText = _stmt;
            }
            _gxDbCommand.DynamicStmt = dynamicStmt;
            _gxDbCommand.CursorDef   = _cursorDef;
            return(parmHasValue);
        }