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); }
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; }
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(); }
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++; }
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); }