我正在开发一个在网络上运行的应用程序。它需要非常频繁地与存储在服务器中的数据库(access数据库)进行联系。大约30台客户端计算机几乎每2-3秒联系一次数据库。我需要知道应用程序中是否存在潜在的显式问题?
如果一个客户正在更新数据库,同时其他客户联系它,会不会有问题?
非常感谢。致以最良好的问候,弗尔坎
发布于 2010-11-10 18:16:09
MS Access在超过大约5- 10个并发连接的情况下性能不佳。
请改用SQL Server Express Edition。
SQL Server Express Edition Overview
了解从MS Access到SQL Server2008的SQL Server Migration Assistent
发布于 2010-11-10 18:19:30
当然,这取决于应用程序中的编码。我在工作中也有类似的应用程序运行,没有遇到过问题。您唯一需要注意的是需要读取数据库的函数。因此,一些提示可能会很方便。
首先,试着限制数据库连接打开的时间(正如Mitch指出的那样)。
其次,尽量避免在读取和保存查询之间出现大的可执行代码块。例如,不要从数据库中读取最大ID,然后运行执行时间超过0.5秒的代码,然后保存需要数据库中最大ID的记录。如果另一个用户在同一时间插入了一个新项目,这可能会出错。
发布于 2010-11-10 18:22:56
要连接到SQL Express,请使用如下所示的块:
Dim conn As SqlClient.SqlConnection = New Data.SqlClient.SqlConnection("Server=" & servername & ";Database=" & databasename & ";User ID=" & userid & ";Password=" & password & ";Trusted_Connection=False;")
Dim sqlstatement As String = "INSERT INTO " & table & " (ATime,AStringWithLimitedLength,AnInteger,AString)"
sqlstatement &= " VALUES (@dates,@chars,@ints,@string)"
Dim comm As New SqlClient.SqlCommand(sqlstatement, conn)
With comm.Parameters
.Add("@dates", SqlDbType.DateTime).Value = Me.Timestamp
.Add("@chars", SqlDbType.VarChar).Value = Me.Type
.Add("@ints", SqlDbType.Int).Value = Me.UserID
.Add("@string", SqlDbType.Text).Value = Me.SQL
End With
conn.Open()
comm.ExecuteNonQuery()
conn.Close()
总而言之,除了不使用OleDB而使用SqlClient之外,它与MSAccess非常相似。您可能希望(免费)下载“SQL Server Management Studio Express”,以WYSIWYG方式修改数据库。
https://stackoverflow.com/questions/4143317
复制相似问题