Excel VBA 操作 MySQL(五,六,七)

2023-12-28 14:22:22 浏览数 (2)

使用Excel VBA向MySQL数据库中添加和导入数据,可以使用ADODB.Connection和ADODB.Recordset对象来执行SQL语句。以下是一个示例,演示如何添加数据和从Excel导入数据到MySQL数据库中。

首先,确保已经建立了与MySQL数据库的连接(如前面的示例所示),然后可以使用以下代码将数据添加到数据库中:

代码语言:VBA复制
Sub AddDataToMySQL()
    Dim conn As Object
    Set conn = CreateObject("ADODB.Connection")
    
    ' MySQL数据库连接信息
    Dim serverName As String
    Dim dbName As String
    Dim userName As String
    Dim password As String
    
    serverName = "localhost" ' MySQL服务器地址
    dbName = "mydatabase" ' 数据库名称
    userName = "myuser" ' 数据库用户名
    password = "mypassword" ' 数据库密码
    
    ' 构建连接字符串
    conn.ConnectionString = "DRIVER={MySQL ODBC 5.3 ANSI Driver};" & _
                            "SERVER=" & serverName & ";" & _
                            "DATABASE=" & dbName & ";" & _
                            "USER=" & userName & ";" & _
                            "PASSWORD=" & password & ";"
    
    ' 打开数据库连接
    conn.Open
    
    ' 添加数据到表格
    Dim strSQL As String
    strSQL = "INSERT INTO MyTable (Name, Age) VALUES ('John Doe', 30)"
    conn.Execute strSQL
    
    ' 关闭数据库连接
    conn.Close
    Set conn = Nothing
End Sub

在这个示例中,为名"MyTable"的表格中添加了一条数据,包括姓名和年龄。

要从Excel导入数据到MySQL数据库中,可以使用ADODB.Recordset对象来从Excel工作表中读取数据,然后将其插入到MySQL数据库中。以下是一个示例:

代码语言:VBA复制
Sub ImportDataFromExcelToMySQL()
    Dim conn As Object
    Set conn = CreateObject("ADODB.Connection")
    
    ' MySQL数据库连接信息
    Dim serverName As String
    Dim dbName As String
    Dim userName As String
    Dim password As String
    
    serverName = "localhost" ' MySQL服务器地址
    dbName = "mydatabase" ' 数据库名称
    userName = "myuser" ' 数据库用户名
    password = "mypassword" ' 数据库密码
    
    ' 构建连接字符串
    conn.ConnectionString = "DRIVER={MySQL ODBC 5.3 ANSI Driver};" & _
                            "SERVER=" & serverName & ";" & _
                            "DATABASE=" & dbName & ";" & _
                            "USER=" & userName & ";" & _
                            "PASSWORD=" & password & ";"
    
    ' 打开数据库连接
    conn.Open
    
    ' 打开Excel工作簿
    Dim wb As Workbook
    Set wb = ThisWorkbook ' 使用当前工作簿,你可以根据需要更改
    
    ' 选择工作表
    Dim ws As Worksheet
    Set ws = wb.Sheets("Sheet1") ' 使用工作表的名称,你可以根据需要更改
    
    ' 循环读取Excel工作表中的数据并插入到MySQL数据库中
    Dim iRow As Integer
    Dim strSQL As String
    
    For iRow = 2 To ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' 从第二行开始,根据需要更改
        strSQL = "INSERT INTO MyTable (Name, Age) VALUES ('" & ws.Cells(iRow, 1).Value & "', " & ws.Cells(iRow, 2).Value & ")"
        conn.Execute strSQL
    Next iRow
    
    ' 关闭数据库连接
    conn.Close
    Set conn = Nothing
End Sub

在这个示例中,首先打开了Excel工作簿,选择了要导入的工作表(Sheet1),然后循环读取工作表中的数据,并将每一行的数据插入到MySQL数据库中的表格中。

要在Excel VBA中执行查询操作以检索数据库记录,可以使用ADODB.Connection和ADODB.Recordset对象来执行SQL查询语句,并将结果存储在Recordset中。以下是一个示例,演示如何执行查询操作:

首先,确保已经建立了与MySQL数据库的连接(如前面示例所示),然后可以使用以下代码执行查询并检索数据库记录:

代码语言:VBA复制
Sub QueryDataFromMySQL()
    Dim conn As Object
    Set conn = CreateObject("ADODB.Connection")
    
    ' MySQL数据库连接信息
    Dim serverName As String
    Dim dbName As String
    Dim userName As String
    Dim password As String
    
    serverName = "localhost" ' MySQL服务器地址
    dbName = "mydatabase" ' 数据库名称
    userName = "myuser" ' 数据库用户名
    password = "mypassword" ' 数据库密码
    
    ' 构建连接字符串
    conn.ConnectionString = "DRIVER={MySQL ODBC 5.3 ANSI Driver};" & _
                            "SERVER=" & serverName & ";" & _
                            "DATABASE=" & dbName & ";" & _
                            "USER=" & userName & ";" & _
                            "PASSWORD=" & password & ";"
    
    ' 打开数据库连接
    conn.Open
    
    ' 执行查询
    Dim strSQL As String
    strSQL = "SELECT * FROM MyTable WHERE Age > 25"
    
    ' 创建Recordset对象
    Dim rs As Object
    Set rs = CreateObject("ADODB.Recordset")
    
    ' 执行查询并将结果存储在Recordset中
    rs.Open strSQL, conn
    
    ' 检索数据并在Excel工作表中显示
    Dim iRow As Integer
    iRow = 2 ' 从第二行开始,根据需要更改
    
    Do Until rs.EOF
        ' 将数据从Recordset写入Excel工作表
        ThisWorkbook.Sheets("Sheet1").Cells(iRow, 1).Value = rs("Name").Value
        ThisWorkbook.Sheets("Sheet1").Cells(iRow, 2).Value = rs("Age").Value
        iRow = iRow   1
        rs.MoveNext
    Loop
    
    ' 关闭Recordset和数据库连接
    rs.Close
    conn.Close
    Set rs = Nothing
    Set conn = Nothing
End Sub

在这个示例中,首先执行一个SQL查询,以检索年龄大于25岁的记录。然后,创建了一个ADODB.Recordset对象,并使用Open方法执行查询,并将结果存储在Recordset中。接下来,循环遍历Recordset中的数据,并将它们写入Excel工作表中。

要从文本文件导入数据到MySQL数据库,并将数据导出至文本文件,你可以使用Excel VBA结合MySQL的SQL语句以及文件操作方法来完成这些任务。以下是示例代码,演示如何实现这两个操作:

从文本文件导入数据到MySQL数据库

代码语言:VBA复制
Sub ImportDataFromTextFileToMySQL()
    Dim conn As Object
    Set conn = CreateObject("ADODB.Connection")
    
    ' MySQL数据库连接信息
    Dim serverName As String
    Dim dbName As String
    Dim userName As String
    Dim password As String
    
    serverName = "localhost" ' MySQL服务器地址
    dbName = "mydatabase" ' 数据库名称
    userName = "myuser" ' 数据库用户名
    password = "mypassword" ' 数据库密码
    
    ' 构建连接字符串
    conn.ConnectionString = "DRIVER={MySQL ODBC 5.3 ANSI Driver};" & _
                            "SERVER=" & serverName & ";" & _
                            "DATABASE=" & dbName & ";" & _
                            "USER=" & userName & ";" & _
                            "PASSWORD=" & password & ";"
    
    ' 打开数据库连接
    conn.Open
    
    ' 定义导入数据的SQL语句
    Dim importSQL As String
    importSQL = "LOAD DATA INFILE 'C:\path\to\your\file.txt' " & _
                "INTO TABLE MyTable " & _
                "FIELDS TERMINATED BY ',' " & _
                "LINES TERMINATED BY 'n' " & _
                "IGNORE 1 LINES;"
    
    ' 执行导入数据的SQL语句
    conn.Execute importSQL
    
    ' 关闭数据库连接
    conn.Close
    Set conn = Nothing
End Sub

上述代码中,我们使用LOAD DATA INFILE语句将文本文件中的数据导入到名为"MyTable"的MySQL表格中。请确保替换文件路径('C:pathtoyourfile.txt')和表格名称以及字段分隔符和行分隔符等参数以匹配你的实际情况。

将数据从MySQL数据库导出到文本文件

代码语言:VBA复制
Sub ExportDataFromMySQLToTextFile()
    Dim conn As Object
    Set conn = CreateObject("ADODB.Connection")
    
    ' MySQL数据库连接信息
    Dim serverName As String
    Dim dbName As String
    Dim userName As String
    Dim password As String
    
    serverName = "localhost" ' MySQL服务器地址
    dbName = "mydatabase" ' 数据库名称
    userName = "myuser" ' 数据库用户名
    password = "mypassword" ' 数据库密码
    
    ' 构建连接字符串
    conn.ConnectionString = "DRIVER={MySQL ODBC 5.3 ANSI Driver};" & _
                            "SERVER=" & serverName & ";" & _
                            "DATABASE=" & dbName & ";" & _
                            "USER=" & userName & ";" & _
                            "PASSWORD=" & password & ";"
    
    ' 打开数据库连接
    conn.Open
    
    ' 定义导出数据的SQL语句
    Dim exportSQL As String
    exportSQL = "SELECT * INTO OUTFILE 'C:\path\to\your\exported_file.txt' " & _
                "FIELDS TERMINATED BY ',' " & _
                "LINES TERMINATED BY 'n' " & _
                "FROM MyTable;"
    
    ' 执行导出数据的SQL语句
    conn.Execute exportSQL
    
    ' 关闭数据库连接
    conn.Close
    Set conn = Nothing
End Sub

上述代码中,使用SELECT INTO OUTFILE语句将"MyTable"表格中的数据导出到指定的文本文件中。请确保替换文件路径('C:pathtoyourexported_file.txt')和表格名称以匹配你的实际情况。

0 人点赞