Zdravím, potřeboval bych nutně poradit s chybou, která vzniká při opětovném připojování k databázi Access. K databázi přistupuji postupem níže.
Dim assemblyLocation As String = frmKP.GetType().Assembly.Location
Dim position As Integer = assemblyLocation.LastIndexOf("\")
Dim accessStringTemplate As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + assemblyLocation.Substring(0, position) + "\Data\database.accdb;Persist Security Info=True"
conn = New OleDbConnection(accessStringTemplate)
conn.Open()
Během chodu programu používám různé operace s databází, po jejichž vykonání databázi vždy uzavřu. Například:
Public Function ReadNumberValue(ByVal sqlQuery As String, ByVal pole As String) As Integer
ConnectGDB()
Dim oleDbCommand As OleDbCommand = New OleDbCommand(sqlQuery, conn)
Dim oleDbDataReader As OleDbDataReader = oleDbCommand.ExecuteReader()
Dim value As Integer = 0
Do While oleDbDataReader.Read()
value = oleDbDataReader(pole)
Loop
conn.Dispose()
Return value
End Function
Tento způsob byl úspěšně otestován na několika PC. Bohužel při finálním nasazení aplikace v konkrétním počítačovém ekosystému dochází jednou za čas k chybové hlášce - OleDbException (0x80004005): Byl překročen limit systémových prostředků. Zkusil jsem aplikaci na více těchto PC se stejnou hardwarovou i softwarovou konfigurací a chování bylo stejné. Zkusil jsem následně malou změnu v kódu, kdy místo neustálého otvírání a zavírání databáze jsem se připojil pouze jednou po dobu chodu aplikace, nicméně to nepomohlo. Tušíte v čem by mohl být problém? Nemám se čeho chytit, netuším jak celou věc řešit. Každá rada bude dobrá. Jsem amatér, tzn. pokud potřebujete více informací pro rozřešení problému, ptejte se prosím. Děkuji.
|