Подключение к файлу dBase на удаленном сервере - PullRequest
0 голосов
/ 20 августа 2010

У меня есть сайт asp.net, которому нужно подключиться к файлу dBase на удаленном сервере. На удаленном сервере настроено соединение DSN System ODN, но я не знаю, как к нему подключиться.

1 Ответ

1 голос
/ 20 августа 2010

Соединение ODBC на сервере вам не поможет.Соединение ODBC должно быть установлено на компьютере, к которому вы хотите подключиться ИЗ, а не на том, к которому вы хотите подключиться.

Чтобы подключиться к файлам DBASE (и рассматривать их как базу данных), вы будетенеобходимо

  1. подключить диск, чтобы вы могли получить доступ к расположению файлов ..
  2. Connect использовать OleDbConnection.

Это также имеет дело спроблема у вас будет чтение файлов DBase из .NET.Если вы будете читать их достаточно часто, приложение начнет генерировать исключение «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
...