前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Excel VBA 操作 MySQL(五,六,七)

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

原创
作者头像
種法龍
修改2023-12-28 14:22:22
4620
修改2023-12-28 14:22:22
举报
文章被收录于专栏:未知未知

使用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:\path\to\your\file.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:\path\to\your\exported_file.txt')和表格名称以匹配你的实际情况。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 从文本文件导入数据到MySQL数据库
  • 将数据从MySQL数据库导出到文本文件
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档