Vb.net access数据库的大小正在增加

Vb.net access数据库的大小正在增加,vb.net,ms-access,Vb.net,Ms Access,我在VB.net(4.5)中使用Access DB(2016)制作一个应用程序,但有一个小问题。当我插入一条记录(例如RichTextBox变为Byte())时,数据库的大小会增加。但当我删除时,大小不会减小(保持不变)。因此,当我插入和删除记录时,数据库以MB为单位不断增长 我发现当你重新启动电脑时,数据库释放了空间。有什么问题吗?我如何解决这个问题 PD:我正在做我的DB access类的所有.close()和.Dispose()操作。是否根据 提交[事务|工作] 可以使用我没有使用事务。

我在
VB.net(4.5)
中使用
Access DB(2016)
制作一个应用程序,但有一个小问题。当我插入一条记录(例如RichTextBox变为Byte())时,数据库的大小会增加。但当我删除时,大小不会减小(保持不变)。因此,当我插入和删除记录时,数据库以MB为单位不断增长

我发现当你重新启动电脑时,数据库释放了空间。有什么问题吗?我如何解决这个问题


PD:我正在做我的DB access类的所有.close()和.Dispose()操作。

是否根据

提交[事务|工作]


可以使用

我没有使用事务。 但是,我不确定这是否有什么关系,因为当我重新启动我的电脑时,DB是正常的

Public Function ejecutarUpdate(ByVal query As String, ByVal devolverId As Boolean, ByRef id As Integer) As Integer
    Dim numRegistros As Integer = 0

    Try
        conexion = New OleDbConnection(cadenaConexion)
        conexion.Open()
        comando = New OleDbCommand(query, conexion)
        numRegistros = comando.ExecuteNonQuery()

        If devolverId Then
            comando.CommandText = "Select @@Identity"
            id = CInt(comando.ExecuteScalar())
        End If
    Catch oleDbException As OleDbException
        If oleDbException.Errors(0).SQLState = "3022" Then
            Throw New Exception(COD_ERROR_PK_UK) ' Restricción de PK/UK
        Else
            Throw oleDbException
        End If
    Catch exception As Exception
        Throw exception
    Finally
        liberarDB()
    End Try

    Return numRegistros
End Function

Private Sub liberarDB()
    If conexion IsNot Nothing AndAlso conexion.State = ConnectionState.Open Then
        conexion.Close()
        conexion.Dispose()
        conexion = Nothing
    End If

    If comando IsNot Nothing Then
        comando.Dispose()
        comando = Nothing
    End If

    If adaptador IsNot Nothing Then
        adaptador.Dispose()
        adaptador = Nothing
    End If
End Sub

是的,这是Access的一个功能。更一般地说,几乎所有的数据库系统或文件系统

数据库将扩展以保存新记录。当您将记录标记为已删除时,直到稍后才会回收或释放空间

在我使用的Access版本中,关闭Access时(可选)压缩数据库。如果您使用的是com对象或.net对象,而不是MSAccess,则由您使用适当的方法来压缩数据库

如果文件系统显示的文件大小不正确,则可能是(1)shell未按预期更新有问题,或者(2)未正确释放文件


删除后的数据库大小是一个常见问题。另请参见

大小限制为2 GB(2010版-可能在2016年更改)。当您达到该限制时,您可以使用访问权限和“压缩和修复”。这将恢复磁盘空间(当然,在达到限制之前,您可以定期执行压缩任务)。虽然在C#中,您会发现此链接很有用:我对限制没有问题。我说的是我看到的一些测试记录(2-3MB)。。。我在压缩中看到的“问题”是,通常会创建一个新文件(使用压缩数据库)来替换旧文件。是否可以压缩同一个文件?数据库是多用户的。