与 Pervasive 数据库的连接缓慢
connection to Pervasive database slow
这一直是我工作场所的一个持续问题。以前,我们有一个合作编程的学生使用 C# 为我们编写了一些应用程序,这些应用程序在他的笔记本电脑上运行良好,但是一旦应用程序在不同的计算机上使用,与普遍存在的数据库的连接就会变得非常慢。
现在我正在编写一个需要查询 Pervasive 数据库的简单 VB.net 应用程序,我遇到了同样的问题。
这是我的代码:
'PSQL variables
Dim myPsqlConnection As PsqlConnection = New PsqlConnection("ServerName=FILESERVER;ServerDSN=SAGE2")
Dim queryString As String
queryString = "SELECT NAME FROM CUSTOMER"
Dim MyCommand As New PsqlCommand(queryString, myPsqlConnection)
Dim MyReader As PsqlDataReader
Dim tempCustname As String
Try 'open conncetion to Pervasive DB
myPsqlConnection.Open()
Catch ex As Exception
MsgBox("COULD NOT OPEN A CONNECTION TO THE DATABASE" & vbCrLf & ex.Message)
Exit Sub
End Try
Try 'execute Pervasive query
MyReader = MyCommand.ExecuteReader
Catch ex As Exception
MsgBox("QUERY ERROR" & vbCrLf & ex.Message)
Exit Sub
End Try
If MyReader.HasRows = False Then
MsgBox("NO RESULTS FOUND")
Exit Sub
End If
While (MyReader.Read)
tempCustname = MyReader("NAME").ToString()
Customers.Items.Add(tempCustname)
End While
MyReader.Close()
myPsqlConnection.Close()
我单步执行了该程序,大约需要 30 秒才能通过它打开连接的那一行。
至于规格(我会尽力而为):
我的电脑非常强大(16 GB 或 RAM,6 核 AMD 处理器,每核 3.0 Ghz,windows 7 home 64 位)
Pervasive.Data.SqlClient 版本 3.2
使用 Microsoft Visual Basic 2010 Express 编译
这个网络上的计算机很少(大约 7 台),我用 MS Access 数据库没有这样的麻烦。我们的服务器是 2 年前的新服务器,外网已升级为 GB 连接。我应该指出,我对一般的数据库知之甚少,更不用说连接 VB 了。我不是最适合做这件事的人,但我仍然是我们小公司里最有资格的人。
我现在可以使用了。解决方案是首先在普适控制中心安装数据库。首先从 PCC 的主 window 中选择 "new database" 并填写数据库名称、位置、用户名和密码。
接下来我将连接从普遍的 ADO 更改为 OLEDB。我的连接字符串现在看起来像这样:
Dim myPsqlConnection As OleDbConnection = New OleDbConnection("Provider=PervasiveOLEDB;Data Source=DatabaseName;Location=FILESERVER")
感谢大家的帮助!
这一直是我工作场所的一个持续问题。以前,我们有一个合作编程的学生使用 C# 为我们编写了一些应用程序,这些应用程序在他的笔记本电脑上运行良好,但是一旦应用程序在不同的计算机上使用,与普遍存在的数据库的连接就会变得非常慢。
现在我正在编写一个需要查询 Pervasive 数据库的简单 VB.net 应用程序,我遇到了同样的问题。
这是我的代码:
'PSQL variables
Dim myPsqlConnection As PsqlConnection = New PsqlConnection("ServerName=FILESERVER;ServerDSN=SAGE2")
Dim queryString As String
queryString = "SELECT NAME FROM CUSTOMER"
Dim MyCommand As New PsqlCommand(queryString, myPsqlConnection)
Dim MyReader As PsqlDataReader
Dim tempCustname As String
Try 'open conncetion to Pervasive DB
myPsqlConnection.Open()
Catch ex As Exception
MsgBox("COULD NOT OPEN A CONNECTION TO THE DATABASE" & vbCrLf & ex.Message)
Exit Sub
End Try
Try 'execute Pervasive query
MyReader = MyCommand.ExecuteReader
Catch ex As Exception
MsgBox("QUERY ERROR" & vbCrLf & ex.Message)
Exit Sub
End Try
If MyReader.HasRows = False Then
MsgBox("NO RESULTS FOUND")
Exit Sub
End If
While (MyReader.Read)
tempCustname = MyReader("NAME").ToString()
Customers.Items.Add(tempCustname)
End While
MyReader.Close()
myPsqlConnection.Close()
我单步执行了该程序,大约需要 30 秒才能通过它打开连接的那一行。
至于规格(我会尽力而为):
我的电脑非常强大(16 GB 或 RAM,6 核 AMD 处理器,每核 3.0 Ghz,windows 7 home 64 位)
Pervasive.Data.SqlClient 版本 3.2
使用 Microsoft Visual Basic 2010 Express 编译
这个网络上的计算机很少(大约 7 台),我用 MS Access 数据库没有这样的麻烦。我们的服务器是 2 年前的新服务器,外网已升级为 GB 连接。我应该指出,我对一般的数据库知之甚少,更不用说连接 VB 了。我不是最适合做这件事的人,但我仍然是我们小公司里最有资格的人。
我现在可以使用了。解决方案是首先在普适控制中心安装数据库。首先从 PCC 的主 window 中选择 "new database" 并填写数据库名称、位置、用户名和密码。
接下来我将连接从普遍的 ADO 更改为 OLEDB。我的连接字符串现在看起来像这样:
Dim myPsqlConnection As OleDbConnection = New OleDbConnection("Provider=PervasiveOLEDB;Data Source=DatabaseName;Location=FILESERVER")
感谢大家的帮助!