Example #1
0
        public void Execute(string query)
        {
            if (pendingFuture != null)
            {
                throw new InvalidOperationException("The command is already active.");
            }

            IMarshal marshaledQuery = ExplicitString.CreateExecString(connection, query);

            queryType    = QueryType.QT_UNKNOWN;
            affectedRows = prefetchedRows = 0;
            isLastResult = isLastRow = isLastInBatch = false;
            prefetchRow  = currentRow = null;

            object[] parameterRows = new object[1];
            parameterRows[0] = parameterValues;
            Future future = new Future(Service.Execute, GetId(), marshaledQuery, GetId(), parameterRows, null, GetOptions());

            SendRequest(future);
            CLI.ReturnCode rc = ProcessResult(true);

            if (rc != CLI.ReturnCode.SQL_SUCCESS && rc != CLI.ReturnCode.SQL_NO_DATA)
            {
                if (rc != CLI.ReturnCode.SQL_SUCCESS_WITH_INFO)
                {
                    pendingFuture = null;
                    connection.futures.Remove(future);
                }
                Diagnostics.HandleResult(rc, this, connection.OuterConnection);
            }
        }
Example #2
0
        public void Prepare(string query)
        {
            if (pendingFuture != null)
            {
                throw new InvalidOperationException("The command is already active.");
            }

            IMarshal marshaledQuery = ExplicitString.CreateExecString(connection, query);

            Future future = new Future(Service.Prepare, GetId(), marshaledQuery, 0, GetOptions());

            SendRequest(future);
            CLI.ReturnCode rc = ProcessResult(false);
            if (rc != CLI.ReturnCode.SQL_SUCCESS && rc != CLI.ReturnCode.SQL_NO_DATA)
            {
                if (rc != CLI.ReturnCode.SQL_SUCCESS_WITH_INFO)
                {
                    pendingFuture = null;
                    connection.futures.Remove(future);
                }
                Diagnostics.HandleResult(rc, this, connection.OuterConnection);
            }
        }