Количество подключений к БД Access - Visual Basic .NET
Формулировка задачи:
Добрый день!
Замучала одна проблема. Есть папка с разными файлами БД Access (~300шт.)
Один файл - одна БД.
Требуется периодически, раз в 10 секунд, к ним цепляться и добавлять в них строки. Логи, в общем, ведутся в них, если не вдаваться в детали.
Если попытаться открыть 300 БД, то exe-шник падает с неопознанной ошибкой.
Если по одному открывать-закрывать БД, то всё норм, но ощутимо медленно работает, сильно не укладываясь в положенные 10 секунд.
Провел эксперимент:
На Microsoft.Jet.OLEDB.4.0 и на Microsoft.ACE.OLEDB.12.0 эффект одинаковый.
Магическое число 64 - всё норм. 65 - и уже падает с неопознанной ошибкой.
Проблему можно решить, разделив программку на отдельные exe с ~50 параметрами, но это ж изврат...
Можно, само собой, перейти на другую БД, как посоветуют многие (и будут правы 100%), но это небыстро и долго, да и исторически так уж сложилось.
Можно было бы объединить все файлы в одну БД - но это тоже не предлагать, ибо 2ГБ ограничение на размер БД Access набегает тогда очень быстро - вот поэтому они все отдельные (+ раз в год логи чистятся и начинают писаться заново)
Может быть, дело в моём VS2008? И на 2010 всё будет норм?
Зананее спасибо за советы!
Решение задачи: «Количество подключений к БД Access»
textual
Листинг программы
Sub Main() Try Dim DB As OleDbConnection Dim CMD As OleDb.OleDbCommand DB = New OleDbConnection DB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\test\1.mdb" 'DB.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=D:\test\1.mdb" DB.Open() Dim DT As String = "DataTable", DTN As String = "DataTable" For i = 0 To 300 If i > 0 Then DTN = DT & i Dim Query As String = Nothing 'тут формирование строки запроса Query = "INSERT INTO " & DTN & " ([MTime], [MDate], [MLog]) VALUES ('10:00', '18 Apr 2018', 'logs: qwerty')" 'запись в таблицу DataTable + i CMD = New OleDb.OleDbCommand(Query, DB) CMD.ExecuteNonQuery() Next DB.Close() Catch ex As Exception MsgBox(ex.Message) Stop End Try End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д