1

ここで .dbf ファイルの使用に問題があります。CRUD 操作はできますが、トランザクションを使用しようとすると例外が発生します。私はこのようにやっています:

    public void AddRolesToUser(string user, string[] roles)
    {
        using (OdbcConnection connection = new OdbcConnection(ConnectionString))
        {
            OdbcCommand command = new OdbcCommand();
            OdbcTransaction transaction = null;
            command.Connection = connection;
            try
            {
                connection.Open();
                transaction = connection.BeginTransaction();
                command.Connection = connection;
                command.Transaction = transaction;
                command.CommandText = "Delete From Roles Where User='" + user + "'";
                command.ExecuteNonQuery();
                if (roles != null)
                {
                    foreach (string role in roles)
                    {
                        command.CommandText = "Insert Into Roles(User, Role) Values('" + user + "', '" + role + "')";
                        command.ExecuteNonQuery();
                    }
                }
                transaction.Commit();
            }
            catch(OdbcException ex)
            {
                transaction.Rollback();
            }
        }
    }

connection.BeginTransaction() に到達すると、この例外が発生します

[Microsoft][ODBC dBase Driver]Optional feature not implemented

これは私の接続文字列です

 "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;" + "Dbq=" + root + ";"

繰り返しますが、CRUD 操作を正常に行うことができます。

4

1 に答える 1

5

DBF ファイルは単純なデータストアです。インデックス ファイルが関連付けられた単なるランダム アクセス ファイルです。トランザクションを許可するために必要なロックとロールバックを制御するプロセスまたは制御ファイルはありません。

トランザクションが必要な場合は、ファイル ストアを変更する必要があります。

于 2010-09-06T13:16:22.240 に答える