1

drop sequence name他のトランザクション ( ) と同じように実行しようとしてもinsert, update, delete、うまくいきません。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;
    }

メソッドExecuteTransactions()SetSql()DBConnection クラスから、

    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;

    }

OracleCommand ではないため、問題がSetSql()メソッドであるかどうかはわかりません。drop sequenceまたは、その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)

4

0 に答える 0