如何允许多个用户访问/编辑Microsoft Access数据库?

时间:2017-07-06 14:21:38

标签: vb.net visual-studio ms-access

现在我知道,微软访问不是访问它的多个用户的理想客户端,但它是我现在唯一拥有的。我已经建立了一个小程序作为一种库存管理系统。目前有三个用户将同时定期使用它。我遇到的一个问题是,有时数据库将无法访问,并且会出现错误,指出该文件已被“某某”用户使用。另一个问题是,我偶尔会收到类似的错误,其中表示“数据库已被用户置于机器上状态,无法打开或锁定”。我使用下面的行

通过ACE OLEDB连接连接到数据库
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=P:\Tool & Cutter Grinding\Tool Cutter Database.accdb;Persist Security Info = False"

我还更改了实际访问数据库中的一些设置,例如:

  1. 启用所有宏
  2. 将数据库所在的文件夹添加到受信任位置列表
  3. 确认数据库默认设置为以共享模式打开
  4. 我不知道是否有一些我错过的东西或者我需要更改的设置但是到目前为止,问题仍然存在。

    以下是我如何使用数据库的示例。我正在使用基于字符串的SQL命令,但对DataSet / DataTable /等不太熟悉。项目,所以我可能做错了。

     'close connection from any previous session
        con.Close()
    
        'clear dataset so as not to append data
        ds.Clear()
    
        'Select SQL query that selects ALL records from a table
        Dim str As String = "SELECT * FROM " & "[" & table & "]" & ""
        con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=P:\Tool & Cutter Grinding\Tool Cutter Database.accdb;Persist Security Info = False"
    
        'use try catch statement to open the connection
        Try
            con.Open()
        Catch ex As Exception
            MsgBox(Convert.ToString(ex))
        End Try
    
        'use try catch statement to add a table (dt) to the dataset (ds) in order to store values
        Try
            ds.Tables.Add(dt)
        Catch ex As Exception
    
        End Try
    
        'create new dataadapter object using the sql string from above and the connection created above
        da = New OleDbDataAdapter(str, con)
    
        'create new command builder in order to excecute the SELECT SQL statement using the dataadapter created (da)
        'specify prefix and suffix for cb
        Dim cb = New OleDbCommandBuilder(da) With {
            .QuotePrefix = "[",
            .QuoteSuffix = "]"
        }
    
        'use try catch statement to fill the datatable (dt) using the dataadapter (da)
        Try
            da.Fill(dt)
        Catch ex As Exception
            MsgBox(Convert.ToString(ex))
        End Try
    
        'set the datasource of the datagridview to the datatable
        dgv.DataSource = dt.DefaultView
    
        'close the connection to the database
        con.Close()
    

2 个答案:

答案 0 :(得分:0)

转到后端访问数据库文件。文件>选项>客户端设置。对于您的使用案例No Locks应该没问题,但是如果您需要,编辑记录设置也可以使用

Image of Back-End Access File

答案 1 :(得分:0)

  

但它[原文如此]是我现在唯一得到的

实际上,它不是。

查看SQL Server Compact。它是免费的,它很小,它可以自由地处理多个用户。

您可以使用NuGet添加所需的所有引用。