Соединение Firebird ADO. NET не удаляет файл должным образом после удаления соединения - PullRequest
0 голосов
/ 29 апреля 2020

Этот метод должен получить доступ к файлу базы данных и выполнить простой запрос:

private static DataTable QueryStuff(string connectionString, string[] types)
{
        string queryTypes = "('" + string.Join("', '", types) + "')";
        DataTable dtResults = new DataTable();

        try
        {
            using (FbConnection myConnection1 = new FbConnection(connectionString))
            {
                myConnection1.Open();

                FbTransaction fbTransaction = myConnection1.BeginTransaction();

                FbCommand fbCommand = new FbCommand();
                fbCommand = new FbCommand()
                {
                    CommandText = "SELECT  * FROM TABLE WHERE TYPE IN " + queryTypes + ";",
                    CommandType = CommandType.Text,
                    Connection = myConnection1,
                    Transaction = fbTransaction
                };

                FbDataReader dr = fbCommand.ExecuteReader();

                dtResults.Load(dr);

                dr.Close();

                fbTransaction.Commit();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Erro: " + ex.Message);
        }

        return dtResults;
}

После этого программа должна удалить файл базы данных, например:

if (File.Exists(filePath))
    File.Delete(filePath);

За исключением , не может, поскольку файл используется «другим процессом».

Программа сама создала файл, и я уверен, что файл не используется ни в каком другом процессе.

Есть ли лучший способ избавиться от этого соединения?

...