如何从其他系统或服务器访问数据库?

时间:2009-07-06 04:22:08

标签: vb6

使用VB 6

如何从其他系统或服务器访问数据库?

代码

Cn.ConnectionString = "Provider=Microsoft.jet.oledb.4.0; Data Source=" & _
                        App.Path & "\DC-CS.MDB"
Cn.Open

我不想直接在我的代码中提供连接,我想从其他系统或同一系统或服务器中选择一个连接和* .mdb文件。

我必须在VB中使用什么类型的控件进行连接测试和从其他系统或服务器选择mdb文件?

首先我要选择一个连接,如果测试连接,那么我想从其他系统或服务器中选择一个* .mdb文件。如何在VB 6中选择连接和* .mdb文件。

请使用VB 6代码帮助

3 个答案:

答案 0 :(得分:1)

RBarry指的是您可以在一台计算机上“共享”特定文件夹,以便其他计算机可以访问该文件夹。

如果两台计算机被命名为computer1和computer2,那么computer2可以在它的C:盘上共享一个文件夹,给它一些名称,如“sharedfolder”。然后,computer1可以使用路径“\\ computer2 \ sharedfolder”访问该文件夹。

如果computer1上的应用程序无法使用该路径,则可以将驱动器号(如F :)“映射”到路径“\\ computer2 \ sharedfolder”。然后它看起来就像计算机上的F:驱动器。

答案 1 :(得分:1)

您可以使用“数据链接属性”对话框定义OLE DB连接字符串。您可以通过预定义Provider和其他属性开始,然后让用户浏览MDB文件,如果您已将预定义的Jet 4.0作为提供者,则选择它。

完成此选择后,您可以将连接保留为.UDL(通用数据链接)文件。很久很久以前,UDL取代了DSN。我很惊讶他们使用得很少。


以下是一些示例代码,它允许您的程序为用户指定UDL和默认路径以浏览MDB文件。如果UDL不存在,则会打开“数据链接属性”对话框,以便用户可以选择MDB,并在Oking或取消其设置之前从该对话框中让他们测试连接。一旦完全定义了连接,它就会将其作为.UDL文件保留并打开Connection对象。

如果UDL文件存在,则使用UDL中的规范打开Connection。

这里的关键是DbOpenPromptSave()函数。

'Requries references to:
'   Microsoft ActiveX Data Objects x Library (x >= 2.5)
'   Microsoft OLE DB Service Component 1.0 Type Library

Private Function DbOpenPromptSave( _
    ByVal Conn As ADODB.Connection, _
    ByVal UDLPath As String, _
    Optional ByVal MDBSearchStartPath As String = "") As Boolean
    'Returns True if user cancels the dialog.

    On Error Resume Next
    GetAttr UDLPath
    If Err.Number Then
        'No UDL, we need to prompt the user then create one.
        On Error GoTo 0
        Dim dlkUDL As MSDASC.DataLinks

        Set dlkUDL = New MSDASC.DataLinks
        Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
                              & "Persist Security Info=False;" _
                              & "Jet OLEDB:Engine Type=5;" _
                              & "Data Source=" & MDBSearchStartPath & "\;" _
                              & "Window Handle=" & CStr(Me.hWnd)
        If Not dlkUDL.PromptEdit(Conn) Then
            DbOpenPromptSave = True
            Exit Function
        End If

        'Use a Stream as Unicode writer.  Using a relative path to save
        'respects the Current Directory of the process.
        Dim stmUDL As ADODB.Stream
        Set stmUDL = New ADODB.Stream
        With stmUDL
            .Open
            .Type = adTypeText
            .Charset = "unicode"
            .WriteText "[oledb]", adWriteLine
            .WriteText "; Everything after this line is an OLE DB initstring", _
                       adWriteLine
            .WriteText Conn.ConnectionString
            .SaveToFile UDLPath, adSaveCreateOverWrite
            .Close
        End With
        Conn.Open
    Else
        Conn.Open "File Name=" & UDLPath
    End If
End Function

Private Function DbActions() As Boolean
    'Returns True on cancel.
    Dim connDB As ADODB.Connection

    Set connDB = New ADODB.Connection
    If DbOpenPromptSave(connDB, "sample.udl", App.Path) Then
        MsgBox "User canceled!"
        DbActions = True
        Exit Function
    End If
    DoDbOperations connDB 'Whatever you need to do until closing.
    connDB.Close
End Function

DbActions()函数只是调用DbOpenPromptSave()来打开数据库的示例。此函数打开数据库,调用DoDbOperations()(未显示)以实际使用打开的数据库,然后关闭数据库连接。

此示例使用sample.udl的相对路径(当前目录,通常与App.Path相同)并设置MDBSearchStartPath Select Access数据库对话框打开的位置) )到App.Path(因为此对话框默认为打开最后一个CommonDialog的位置)。

换句话说......

它在CD(通常是App.Path)中查找/保存UDL sample.udl,并在App.Path中打开MDB选择对话框。呼。

我想在这种情况下传递CurDir$()可能更清楚。


我希望这接近你的要求,这有点模糊。

用户打开的MDB选择子对话框几乎是标准的CommonDialog.ShowOpen对话框。用户应该能够在任何驱动器上浏览MDB文件,包括远程系统上的文件共享。

答案 2 :(得分:0)

将您的App.Path分享到域。然后在另一个系统上,将它的App.Path指向您的共享。

如果要动态选择路径和/或文件,请使用FileOpen对话框/控件。

至于代码示例,我在近5年内没有使用过真正的VB6,所以我没有任何真实的例子或者无论如何都没有。我最接近的是Excel VBA 6.5。以下是我在Excel中用于浏览和打开Access数据库的VBA函数示例:

Public Function OpenDB() As Boolean
'Open the Database and indicate if successful'
 If IsOpen Then
    OpenDB = True   'we are already open'
    Exit Function
 End If

 If sFile = "" Then sFile = GetSetting("YourAppName", "History", "DBName")

 With Application.FileDialog(msoFileDialogFilePicker)
    'specify the file open dialog'
    .AllowMultiSelect = False
    .Filters.Clear
    .Filters.Add "Access Workbooks", "*.mdb"
    .Filters.Add "All Files", "*.*"
    .InitialFileName = sFile
    .Title = "Open TIP Database"

    .Show

    If .SelectedItems.Count > 0 Then
        sFile = .SelectedItems(1)
    Else    'user canceled ...'
        OpenDB = False
        Exit Function
    End If
 End With

 DB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sFile
 On Error Resume Next
    DB.Open
 If Err.Number <> 0 Then
    MsgBox "Error(" & Err.Number & "): " & Err.Description, vbOKOnly + vbCritical, "Error in OpenDB"
    OpenDB = False
    Exit Function
 End If

 'Opened ok, so finsh-up and exit'
 OpenDB = True
 SaveSetting "YourAppName", "History", "DBName", sFile
End Function

您必须将“Application.FileDialog”替换为对VB Forms FileDialog控件/组件的引用,您应该从工具箱中将其放到VB上(它实际上是一个组件控件,因此它不是真的可见)。

您应该期望它会有一些差异,因为这些是GUI功能,VB Forms GUI与Excel GUI完全不同。所以属性&amp;设置可能不同,您必须使用它们或在VB帮助中查找它们。

注意:GetSetting和SaveSetting只是保存注册表中使用的最后一个文件名和路径,以便它可以在下次使用它作为默认位置。