首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Access/Excel 資料匯入 MySQL 完整實戰 (二):VB6/ADO 自動化匯入程式完整碼

     編輯:PHP 相關知識

系列教學第二部分:使用 VB6 + ADO 2.6 + Excel 9.0 Object Library 開發視窗程式,批次匯入 Access MDB 與 Excel XLS 檔案至 MySQL。

專案參考設定

  • Microsoft ActiveX Data Objects 2.6 Library (ADO)
  • Microsoft Excel 9.0 Object Library (Excel 自動化)
  • Microsoft Common Dialog Control 6.0 (SP3) (檔案選擇對話框)
  • Microsoft Windows Common Controls 6.0 (SP3) (ProgressBar、StatusBar)

表單介面控制項配置

編號控制項名稱用途
1-3TextBoxmdbfilename, mdbpassword, xlsfilename檔案路徑、MDB 密碼、XLS 路徑
4CommandButtonselect_mdbfile選擇 MDB 檔案
5CommandButtonimportMDB執行 MDB 匯入
6CommonDialogCommonDialog1MDB 檔案對話框
7CommandButtonselect_xlsfile選擇 XLS 檔案
8CommandButtonimportXLS執行 XLS 匯入
9CommonDialogCommonDialog2XLS 檔案對話框
10ProgressBarprgBar1匯入進度顯示
11StatusBarStatusBar1狀態訊息 (Style=1-sbrSimple)

核心程式碼模組 (Form 標準模組)

Option Explicit
Dim Cn As New ADODB.Connection      ' Access/Excel 連線
Dim Cnmysql As New ADODB.Connection ' MySQL 連線
Dim Rs As New ADODB.Recordset       ' 來源 Recordset
Dim Rsmysql As New ADODB.Recordset  ' 目標 Recordset (可選)

' 字串清理:移除雙引號、單引號轉義
Function replace_str(srcstr As String) As String
  srcstr = Replace(srcstr, """", "")
  replace_str = Replace(srcstr, "'", "''")
End Function

Private Sub Form_Load()
  prgBar1.Visible = False
  ' MySQL 連線 (DSN-less 或 DSN)
  Cnmysql.ConnectionString = "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=build;Uid=root;Pwd=yourpwd;Option=3;"
  Cnmysql.Open
End Sub

' 選擇 MDB 檔案
Private Sub select_mdbfile_Click()
  CommonDialog1.Filter = "Access Files (*.mdb)|*.mdb"
  CommonDialog1.ShowOpen
  If CommonDialog1.FileName <> "" Then
    mdbfilename.Text = CommonDialog1.FileName
  End If
End Sub

' 匯入 MDB 主邏輯
Private Sub importMDB_Click()
  If mdbfilename.Text = "" Then MsgBox "請先選擇 MDB 檔案": Exit Sub
  
  ' 開啟 Access 連線
  Cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mdbfilename.Text & ";"
  If mdbpassword.Text <> "" Then Cn.ConnectionString = Cn.ConnectionString & "Jet OLEDB:Database Password=" & mdbpassword.Text
  Cn.Open
  
  ' 讀取來源資料 (假設來源表名為 loupan)
  Set Rs = Cn.Execute("SELECT * FROM loupan")
  If Rs.EOF And Rs.BOF Then MsgBox "來源無資料": Exit Sub
  
  ' 進度條初始化
  Rs.MoveLast: Rs.MoveFirst
  prgBar1.Min = 0: prgBar1.Max = Rs.RecordCount: prgBar1.Value = 0: prgBar1.Visible = True
  StatusBar1.Panels(1).Text = "正在匯入 MDB..."
  
  ' 批次寫入 MySQL (使用 ADO Command 參數化)
  Dim cmd As New ADODB.Command
  Set cmd.ActiveConnection = Cnmysql
  cmd.CommandText = "INSERT INTO loupan (loupantype, inputdate, at_whatsection, buildname, buildaddress, room, hall, areasize, exp_sellprice, ownername, contactway, memo, updatestatus, goodloupan) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
  cmd.CommandType = adCmdText
  cmd.Prepared = True
  
  Do Until Rs.EOF
    ' 參數繫結 (須對應順序)
    cmd.Parameters(0).Value = replace_str(Rs("loupantype") & "")
    cmd.Parameters(1).Value = Rs("inputdate")
    cmd.Parameters(2).Value = replace_str(Rs("at_whatsection") & "")
    cmd.Parameters(3).Value = replace_str(Rs("buildname") & "")
    cmd.Parameters(4).Value = replace_str(Rs("buildaddress") & "")
    cmd.Parameters(5).Value = Rs("room")
    cmd.Parameters(6).Value = Rs("hall")
    cmd.Parameters(7).Value = Rs("areasize")
    cmd.Parameters(8).Value = Rs("exp_sellprice")
    cmd.Parameters(9).Value = replace_str(Rs("ownername") & "")
    cmd.Parameters(10).Value = replace_str(Rs("contactway") & "")
    cmd.Parameters(11).Value = replace_str(Rs("memo") & "")
    cmd.Parameters(12).Value = Rs("updatestatus")
    cmd.Parameters(13).Value = Rs("goodloupan")
    cmd.Execute
    
    Rs.MoveNext
    prgBar1.Value = prgBar1.Value + 1
    DoEvents
  Loop
  
  prgBar1.Visible = False
  StatusBar1.Panels(1).Text = "MDB 匯入完成,共 " & Rs.RecordCount & " 筆"
  Rs.Close: Cn.Close
End Sub

' 匯入 XLS 邏輯 (類似,使用 Excel Object 開啟工作表讀取)
' Private Sub importXLS_Click() ... 略 ...

關鍵技術要點

  • 參數化命令:cmd.Prepared = True + ? 佔位符,防注入、提升批次效能。
  • 進度條:Rs.MoveLast 取得總筆數 (需支援書籤的游標),迴圈中更新 Value。
  • 錯誤處理:生產碼需加入 On Error GoTo ErrHandler、交易控制 (BeginTrans/CommitTrans/RollbackTrans)。
  • Excel 匯入:Set xlApp = New Excel.Application → xlApp.Workbooks.Open → 迴圈 Cells(row, col) 讀取 → 同樣參數化寫入 MySQL。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved