给你贴完整代码,已经测试过,肯定行,一定要给分哦!自己好好研究一下,肯定行哦! 三个窗体,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
三个窗体,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