
Я программно создаю базу данных и заполняю ее таблицами. Вот так:
- Код: Выделить всё
Dim strDbName As String
strDbName = Application.StartupPath.Remove(Application.StartupPath.Length - 4, 4) + "\db\" + DiscDBName
Dim catConnection As ADOX.Catalog
catConnection = New ADOX.Catalog
catConnection.Create("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strDbName)
Dim con As ADODB.Connection
Dim strSQL As String
con = New ADODB.Connection
con.Open("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strDbName)
catConnection.ActiveConnection = con
strSQL = "CREATE TABLE Razdeli (" & _
"Razd_ID int," & _
"Razdel VarChar(150));"
con.Execute(strSQL)
strSQL = "CREATE TABLE Topics (" & _
"Razd_ID int," & _
"Topic_ID int," & _
"Topic VarChar(150));"
con.Execute(strSQL)
strSQL = "CREATE TABLE Questions (" & _
"Topic_ID int," & _
"Quest_ID int," & _
"Var int," & _
"Question VarChar(150)," & _
"Ans_Num int);"
con.Execute(strSQL)
strSQL = "CREATE TABLE Answers (" & _
"Quest_ID int," & _
"Ans_ID int," & _
"Answer VarChar(150)," & _
"Ans_Key Bit);"
con.Execute(strSQL)
strSQL = "CREATE TABLE Variants (" & _
"ID int," & _
"Variant VarChar(150));"
con.Execute(strSQL)
con.Close()
con = Nothing
catConnection = Nothing
В процессе работы приложения создаю несколько таких баз. Но может потребоваться удалить какую-либо из них. Проблема заключается в следующем. Если база - файл *.mdb - была создана при одном предыдущих запусков приложения, то файл удаляется без проблем. Если же я хочу удалить файл, созданный при текущей работе приложения, то на строке
- Код: Выделить всё
File.Delete(путь)
Возникает вот такая ошибка:
An unhandled exception of type 'System.IO.IOException' occurred in mscorlib.dll
Additional information: The process cannot access the file "...\tdb73.mdb" because it is being used by another process.
Я так понимаю, что все создаваемые соединения почему-то не закрываются. Видимо в коде, прописаном выше, что-то не так. Может я как-то не так закрываю эти самые соединения. Пожалуйста, подскажите (если можно, развернутый ответ

