public void Free(bool CheckError)
        {
            if (statement == -1)
            {
                return;
            }
            if (connection.Threaded)
            {
                connection.Detach();
            }
            connection.RemoveCommand(this);
            int rc;

            if (connection.Session == -1)
            {
                rc = (int)CLI.ErrorCode.cli_ok;
            }
            else
            {
                rc = CLI.cli_free(statement);
            }
            statement = -1;
            if (CheckError)
            {
                CLI.CliCheck(rc, "cli_free failed");
            }
            Fields.Clear();
            Parameters.Clear();
            table_name = "";
            described  = false;
        }