Esempio n. 1
0
 void ExecutePrepareQuery_A(Action nextAction)
 {
     //make sure that when Finished is called
     //when this complete
     if (_prepareContext == null)
     {
         ExecuteNonPrepare_A(nextAction);
         return;
     }
     if (_prepareContext.statementId == 0)
     {
         throw new Exception("exec Prepare() first");
     }
     //------------------------------------------------
     ResetPrepareStmt_A(() =>
     {
         //The server will send a OK_Packet if the statement could be reset, a ERR_Packet if not.
         //--------------------------------------------
         _prepareStatementMode = true;
         _sqlParserMx.UseResultParser(true);
         //--------------------------------------------
         _writer.Reset();
         //fill prepared values
         ComExecPrepareStmtPacket.Write(_writer,
                                        _prepareContext.statementId,
                                        _prepareContext.PrepareBoundData(_cmdParams));
         //--------------------------------------------
         SendAndRecv_A(_writer.ToArray(), nextAction);
     });
 }
Esempio n. 2
0
        void ExecutePrepareQuery()
        {
            if (_cmdParams == null)
            {
                return;
            }

            if (_prepareContext == null)
            {
                ExecuteNonPrepare();
                return;
            }

            if (_prepareContext.statementId == 0)
            {
                throw new Exception("exec Prepare() first");
            }
            //---------------------------------------------------------------------------------
            if (_executePrepared)
            {
                ResetPrepareStmt();
            }

            _writer.Reset();

            //fill prepared values
            var excute = new ComExecutePrepareStatement(_prepareContext.statementId, _prepareContext.PrepareBoundData(_cmdParams));

            excute.WritePacket(_writer);

            SendPacket(_writer.ToArray());
            ParseReceivePacket();
            _executePrepared = true;
            if (OkPacket != null || LoadError != null)
            {
                return;
            }
            _lastPrepareRow = new RowPreparedDataPacket(_tableHeader);
        }