C# 在C中使用Oracle删除/创建序列#

C# 在C中使用Oracle删除/创建序列#,c#,oracle,oracle10g,oracle-manageddataaccess,C#,Oracle,Oracle10g,Oracle Manageddataaccess,当我试着像运行任何其他事务一样运行删除序列名(插入、更新、删除)时,它不起作用。如何从C#程序中删除并创建序列 这是密码 public static bool executeQuery(string query) { bool success = false; DBConnection db = new DBConnection(); db.Connect(); if (db.GetConnectionState(

当我试着像运行任何其他事务一样运行
删除序列名
插入、更新、删除
)时,它不起作用。如何从C#程序中删除并创建序列

这是密码

    public static bool executeQuery(string query)
    {
        bool success = false;
        DBConnection db = new DBConnection();
        db.Connect();

        if (db.GetConnectionState())
        {
            db.SetSql(query);

            if (db.ExecuteTransactions())
                success = true;
            else
                success = false;
        }
        else
            success = false;

        return success;
    }
以及DBConnection类中的方法
ExecuteTransactions()
SetSql()

    private OracleConnection connection;
    private OracleCommand command;
    private bool autoDisconnect;

    public bool ExecuteTransactions()
    {

        OracleTransaction transaction = null;
        bool success = false;

        try
        {
            transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted);

            command.Connection = connection;
            command.Transaction = transaction;

            if (command.ExecuteNonQuery() > 0)
            {

                transaction.Commit();
                success = true;
            }
            else
            {
                transaction.Rollback();
                success = false;
            }
        }
        catch (Exception ex)
        {
            success = false;
            autoDisconnect = true;
            throw new Exception(ex.ToString());
        }
        //Cleaning
        finally
        {
            if (transaction != null)
            {
                transaction.Dispose();
            }
            if (autoDisconnect)
            {
                if (command.Parameters.Count > 0)
                {
                    foreach (OracleParameter pram in command.Parameters)
                    {
                        if (pram.Direction != ParameterDirection.ReturnValue)
                            pram.Dispose();
                    }
                }
                if (command != null)
                {
                    command.Dispose();
                }

                Dispose();
            }
        }
        return success;
    }

    public void SetSql(string sql)
    {
        command = new OracleCommand(sql);
        command.BindByName = true;

    }
我不确定问题是否出在
SetSql()
方法上,因为
drop sequence
不是OracleCommand?或者如果它是
ExecuteTransactions()
方法,则在
if(command.ExecuteNonQuery()>0)行的某个位置

谢谢大家!


编辑:这是错误

An exception of type 'System.Exception' occurred in TDS1.exe but was not handled in user code


Additional information: System.InvalidOperationException: OracleCommand.CommandText is invalid


   at Oracle.ManagedDataAccess.Client.OracleCommand.DoPreExecuteProcessing(OracleDependencyImpl orclDependencyImpl, Boolean bXmlQuerySave)


   at Oracle.ManagedDataAccess.Client.OracleCommand.ExecuteNonQuery()

if(command.ExecuteNonQuery>0)

行中,我从未尝试过C#中的DDL,但我确实有这样一个随机想法:尝试将DDL包装在一个执行立即数(动态SQL)中,如下所示:查询:=“执行立即数‘drop sequence name’;请注意,DDL在DDL之前和之后都执行隐式提交,因此,如果在尝试回滚时尝试将DDL与其他DML语句组合,则可能会产生副作用。此外,“它不工作”不是一个有效的Oracle或C#错误。。。因此,在将来,请提供错误(如果适用)或没有返回错误时的行为。@kris,请检查编辑,我已经包含了错误消息“我从未尝试过C#中的DDL”,但我有一个随机的想法:尝试将DDL包装在一个立即执行(动态SQL)中,如下所示:query:=“execute immediate‘drop sequence name’”;请注意,DDL在DDL之前和之后执行隐式提交,因此在尝试回滚时,如果尝试将DDL与其他DML语句结合使用,可能会产生副作用。此外,“它不工作”不是有效的Oracle或C错误……因此,今后请提供错误(如果适用)或没有返回错误时的行为。@克里斯,请检查编辑,我已经包含了错误消息