我有一个asp.net网站,需要连接到远程服务器上的dBase文件。远程服务器已配置ODBC系统DSN连接,但我不知道如何连接它。
答案 0 :(得分:1)
服务器上的ODBC连接对您没有帮助。需要在要连接FROM的计算机上设置ODBC连接,而不是要连接到的计算机。
为了连接到DBASE文件(并将它们视为数据库),您需要
它还处理您将从.NET读取DBase文件的问题。如果你经常阅读它们,应用程序将开始抛出“System.Resources.Exceeded”异常。我发现的唯一可靠的解决方案是杀死应用程序并重新启动它,这在名为FixMyself的代码中完成。 (不包括在内,因为它包含敏感数据)。 FixMyself例程实际上启动了第二个exe,它杀死了这个exe,然后重新启动它。
下面的示例代码是从生产代码中复制的,并且应该为您提供正确的方向。它映射驱动器,连接和读取。
它很难看,但它有效。它也只是部分的,因为它调用了这里没有包含的几个功能。但同样,它应该足以让你前进。
Public Function GetRegisterConnectionString(ByVal PathToFolder As String)
Return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & PathToFolder & ";Extended Properties=dBASE IV;User ID=Admin;Password="
End Function
Public Sub ReadMyDbaseFile(ByVal DriveLetter As String, ByVal IPAddress As String)
Dim DpalmPath As String = "\\" & IPAddress & "\c$\Dpalm"
Dim cn As New System.Data.OleDb.OleDbConnection("")
cn.ConnectionString = Me.GetRegisterConnectionString(DpalmPath)
If ds.Tables.Contains("CurrentPrices") Then
ds.Tables.Remove("CurrentPrices")
End If
Dim POSAdapter As New System.Data.OleDb.OleDbDataAdapter("select * From MyDbaseFile WHERE SomeField > 0 AND ACTIVE = -1", cn)
Try
POSAdapter.Fill(ds, "CurrentPrices")
Catch ex As Exception
If InStr(ex.ToString().ToLower(), "system resource exceeded") Then
WriteToLog("System Resource Exceeded Error was thrown on register " & DriveLetter & ", IP " & IPAddress & ".")
Me.FixMyself()
Else
Throw New Exception(ex.ToString())
End If
End Try
ds.Tables("CurrentPrices").Columns.Add("LastModified", GetType(Date))
POSAdapter.Dispose()
POSAdapter = Nothing
cn.Dispose()
cn = Nothing
ds.AcceptChanges()
GC.Collect()
End Sub