小弟我新手,只写过单机版的VB程序。现想写一个多用户连接远程外网数据库的程序,数据库是放在西部数码的虚拟主机上的,且只支持MYSQL。毫无思路,不知道从何下手远程连接和修改MYSQL数据库,望大侠们不吝赐教,提供思路能提供参考代码。不胜感激!数据库mysqlvb远程连接

解决方案 »

  1.   

    就是 ConnectionString 中的 Server=这里改为虚拟机的ip
      

  2.   

    在上面架个IIS好了。通过ASP页来操作。
      

  3.   

    给你贴完整代码,已经测试过,肯定行,一定要给分哦!自己好好研究一下,肯定行哦!
    三个窗体,MDIForm、frmConnect、frmSQLViewer和一个模块
    你要根据代码中的涉及到的控件而添加哦!
    frmConnect窗体:
    窗口添加5个textbox控件,按照下面代码中的名称改为相应名称,用途是填写服务器IP、用户名、密码和数据库名称的。别忘了下载一个MySQL ODBC 3.51,安装上,否则无驱动不行。
    Option Explicit
    Private Sub cmdCancel_Click()
    '取消
    Unload Me
    End Sub
    Private Sub cmdPing_Click()
    '测试
    Dim msg As String
    If IsValid = True Then
        ConSTR = BuildSTR
        DisableControls
        If Connect = True Then
            MsgBox "服务器和数据库完整,测试通过!", vbInformation, "状态"
        Else
            msg = "查询超时... 连接失败..." & vbCr & "可以有以下错误 :" & vbCr & vbCr & "1. 服务器或者数据库不存在..." & vbCr & "2. 用户名不存在" & vbCr & "3. 密码或者用户名错误"
            MsgBox msg, vbCritical, "信息"
        End If
    End If
    EnableControls
    End SubPrivate Sub cmdView_Click()
    '显示字符串
    ConSTR = BuildSTR
    MsgBox ConSTR, vbInformation, "字符串"
    End SubPrivate Sub Form_Load()
    Me.Move (Screen.Width - Me.Width) / 3, (Screen.Height - Me.Height) / 4
    End SubPrivate Sub cmdOpen_Click()
    '打开
    Dim msg As String
    If IsValid = True Then
        ConSTR = BuildSTR
        DisableControls
        If Connect = True Then
            frmSQLViewer.Show
            Unload Me
        Else
            msg = "查询超时... 连接失败..." & vbCr & "可以有以下错误 :" & vbCr & vbCr & "1. 服务器或者数据库不存在..." & vbCr & "2. 用户名不存在" & vbCr & "3. 密码或者用户名错误"
            MsgBox msg, vbCritical, "信息"
            EnableControls
        End If
    End If
    End SubPrivate Function IsValid() As Boolean
    If txtDatabase = "" Then
        MsgBox "未选择数据库", vbInformation + vbOKOnly, "参数错误"
        IsValid = False
        Exit Function
    End If
    If txtServer = "" Then
        MsgBox "未选择服务器", vbInformation + vbOKOnly, "参数错误"
        IsValid = False
        Exit Function
    End If
    IsValid = True
    End FunctionPublic Function BuildSTR() As String
    ' 建立连接字符串
    '连接参数
    'BuildSTR = BuildSTR & ";Persist Security Info=False;Initial Catalog=" & txtDatabase & ";Data Source=" & txtServer
    BuildSTR = "DRIVER={MySQL ODBC 3.51 Driver}; " _
                & " Password=" & txtPassword & "; " _
                & " Persist Security Info=False; " _
                & " User ID=" & txtUser & "; " _
                & " Server=" & txtServer & ";" _
                & " DataBase=" & txtDatabase & "; " _
                & " OPTION=3;stmt=SET NAMES GB2312"
    End FunctionPrivate Sub EnableControls()
    txtServer.Enabled = True
    txtDatabase.Enabled = True
    cmdView.Enabled = True
    cmdPing.Enabled = True
    cmdOpen.Enabled = True
    cmdCancel.Enabled = True
    End SubPrivate Sub DisableControls()
    txtServer.Enabled = False
    txtDatabase.Enabled = False
    cmdView.Enabled = False
    cmdPing.Enabled = False
    cmdOpen.Enabled = False
    cmdCancel.Enabled = False
    End SubfrmSQLViewer窗体:Option Explicit
    Dim CTN As ADODB.Connection
    Dim RSTable As ADODB.Recordset
    Dim RSRc As ADODB.RecordsetPrivate Sub cboTables_Click()
    '选择表
    On Error GoTo errorhandler
    adoSQL.ConnectionString = ConSTR
    adoSQL.RecordSource = "SELECT * FROM " & cboTables.Text
    adoSQL.Refresh
    FillcboFields
    Exit Sub
    errorhandler:
        MsgBox Error$
    End SubPrivate Sub cmdAdd_Click()
    '增加
    On Error GoTo cmdAdd_Click_ErrHandler
    adoSQL.Recordset.AddNew
    Exit Sub
    cmdAdd_Click_ErrHandler:
        MsgBox Err.Description & vbCr & vbCr & "(错误号 #" & Err.Number & ")", , "frmSQLViewer窗体错误: Sub cmdAdd_Click"
    End SubPrivate Sub cmdDelete_Click()
    '删除
    On Error GoTo cmdDelete_Click_ErrHandler
    adoSQL.Recordset.Delete
    Exit Sub
    cmdDelete_Click_ErrHandler:
        MsgBox Err.Description & vbCr & vbCr & "(错误号 #" & Err.Number & ")", , "frmSQLViewer窗体错误: Sub cmdDelete_Click"
    End SubPrivate Sub cmdUpdate_Click()
    '更新
    On Error GoTo cmdUpdate_Click_ErrHandler
    adoSQL.Recordset.Update
    Exit Sub
    cmdUpdate_Click_ErrHandler:
        MsgBox Err.Description & vbCr & vbCr & "(错误号 #" & Err.Number & ")", , "frmSQLViewer窗体错误: Sub cmdUpdate_Click"
        Err.Raise Err.Number, Err.Source, Err.Description, Err.HelpFile, Err.HelpContextID
    End SubPrivate Sub cmdRefresh_Click()
    '刷新
    On Error GoTo cmdRefresh_Click_ErrHandler
    adoSQL.Recordset.Requery
    Exit Sub
    cmdRefresh_Click_ErrHandler:
        MsgBox Err.Description & vbCr & vbCr & "(错误号 #" & Err.Number & ")", , "frmSQLViewer窗体错误: Sub cmdRefresh_Click"
    End SubPrivate Sub Form_Load()
    fraWorkSpace.Caption = "数据库名称 - " & frmConnect.txtDatabase.Text
    cboTables.Clear
    GetTable
    End SubPrivate Sub GetTable()
    Dim X As Integer
    Dim CurTable As String
    Set CTN = New ADODB.Connection
    Set RSTable = New ADODB.Recordset
    '打开连接
    CTN.ConnectionString = ConSTR
    CTN.Open
    Set RSTable = CTN.OpenSchema(adSchemaTables)
    RSTable.MoveFirst
    Do Until RSTable.EOF
        If RSTable.Fields("TABLE_TYPE") = "TABLE" Then
            cboTables.AddItem RSTable.Fields("TABLE_NAME")
        End If
        RSTable.MoveNext
    Loop
    RSTable.Close
    Set RSTable = Nothing
    '关闭连接
    CTN.Close
    Set CTN = Nothing
    If cboTables.ListCount <> 0 Then cboTables.ListIndex = 0
    Exit Sub
    errorhandler:
        MsgBox Error$
    End SubPrivate Sub FillcboFields()
    Dim X As Integer
    Dim CTable As String
    cboFields.Clear
    CTable = cboTables.Text
    Set CTN = New ADODB.Connection
    Set RSTable = New ADODB.Recordset
    CTN.ConnectionString = ConSTR
    CTN.Open
    Set RSRc = New ADODB.Recordset
    RSRc.ActiveConnection = CTN
    RSRc.Open CTable, , , , adCmdTable
    For X = 0 To RSRc.Fields.Count - 1
        If RSRc.Fields(X).Name <> "ID" Then
            cboFields.AddItem RSRc.Fields(X).Name
        End If
    Next X
    RSRc.Close
    Set RSRc = Nothing
    CTN.Close
    Set CTN = Nothing
    If cboFields.ListCount <> 0 Then cboFields.ListIndex = 0
    End Sub模块内容:
    Option Explicit
    Global ConSTR As String     '连接字符串
    Sub Main()
        frmMDISQL.Show
    End Sub
    Public Function Connect() As Boolean
    On Error GoTo errorhandler
    Dim SQLServer As ADODB.Connection
    Set SQLServer = New ADODB.Connection
    SQLServer.ConnectionString = ConSTR
    SQLServer.Open
    If SQLServer.State = adStateOpen Then
        Connect = True
    Else
        Connect = False
    End If
    SQLServer.Close
    Exit Function
    errorhandler:
        MsgBox Error$
        Connect = False
    End Function