/// <summary> ///+/- blocking /// </summary> /// <param name="nextAction"></param> public void Execute(bool execReader, Action nextAction = null) { _execState = QueryExecState.Exec; _queryUsedMode = execReader ? QueryUseMode.ExecReader : QueryUseMode.ExecNonQuery; //------------------- //blocking method*** //wait until execute finish //------------------- if (nextAction != null) { //not block here if (_prepareContext != null) { ExecutePrepareQuery_A(nextAction); } else { ExecuteNonPrepare_A(nextAction); } } else { //block _conn.InitWait(); if (_prepareContext != null) { ExecutePrepareQuery_A(_conn.UnWait); } else { ExecuteNonPrepare_A(_conn.UnWait); } _conn.Wait(); } }
/// <summary> /// +/- blocking /// </summary> /// <param name="nextAction"></param> public void Prepare(Action nextAction = null) { _execState = QueryExecState.Prepare; _queryUsedMode = QueryUseMode.Prepare; if (_cmdParams == null) { throw new Exception("Sql cmdParams can not null."); } //------------------- //blocking method*** //wait until execute finish //------------------- //prepare sql query _sqlParserMx.UsePrepareResponseParser(); _prepareContext = null; //------------------------------------------------------------- _writer.Reset(); ComPrepareStatementPacket.Write( _writer, _sqlStrTemplate.BindValues(_cmdParams, true)); //------------------------------------------------------------- if (nextAction != null) { //not block here SendAndRecv_A(_writer.ToArray(), nextAction); } else { //blocking _conn.InitWait(); SendAndRecv_A(_writer.ToArray(), _conn.UnWait); _conn.Wait(); } }
/// <summary> ///+/- blocking /// </summary> /// <param name="nextAction"></param> public void Execute(bool execReader, Action nextAction = null) { _execState = QueryExecState.Exec; _queryUsedMode = execReader ? QueryUseMode.ExecReader : QueryUseMode.ExecNonQuery; //------------------- //blocking method*** //wait until execute finish //------------------- if (nextAction != null) { //not block here if (_prepareContext != null) { ExecutePrepareQuery_A(nextAction); } else { if (!execReader) { //execute non query, ExecuteNonPrepare_A(() => { Close(nextAction); }); } else { ExecuteNonPrepare_A(nextAction); } } } else { //block _conn.InitWait(); if (_prepareContext != null) { ExecutePrepareQuery_A(_conn.UnWait); } else { ExecuteNonPrepare_A(_conn.UnWait); } if (!_conn.Wait()) { //TODO: handle wait-timeout _execState = QueryExecState.Terminated; } else { if (!execReader && _prepareContext == null) { //execute non query Close(null); } } } }
/// <summary> ///+/- blocking /// </summary> /// <param name="nextAction"></param> public void Execute(bool execReader, Action nextAction = null) { _execState = QueryExecState.Exec; _queryUsedMode = execReader ? QueryUseMode.ExecReader : QueryUseMode.ExecNoneQuery; //------------------- //blocking method*** //wait until execute finish //------------------- if (nextAction != null) { //not block here if (_prepareContext != null) { ExecutePrepareQuery_A(nextAction); } else { ExecuteNonPrepare_A(nextAction); } } else { //block _conn.InitWait(); if (_prepareContext != null) { ExecutePrepareQuery_A(_conn.UnWait); } else { ExecuteNonPrepare_A(_conn.UnWait); } _conn.Wait(); } }