从 EXCEL 连接到 SQL 数据库

Posted

技术标签:

【中文标题】从 EXCEL 连接到 SQL 数据库【英文标题】:Connect to an SQL database from EXCEL 【发布时间】:2017-02-10 21:45:38 【问题描述】:

我已经学习了一些教程,但我的连接一直失败,我尝试了很多不同的连接方式。

我通过 mysql 工作台连接到 mySQL。我使用 IP 地址和端口号,然后使用我的凭据登录。这很好用,我可以做我需要的查询。

我现在正尝试通过 Excel,最好是通过 VBA 访问这个数据库。我试图创建一个新的连接,但我所做的一切似乎都不起作用。我不确定将什么放入我的 strConn 字符串中。

我目前正在使用:

Options Explicit
Private Sub CommandButton2_Click()
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim strConn As String

    Set cn = New ADODB.Connection
    strConn = "DRIVER=MySQL ODBC 5.3.7 Driver;" & _ 
              "SERVER=XXX.XXX.X.X;" & _ 
              "PORT=3306" & _ 
              "DATABASE=cahier_de_lab;" & _ 
              "UID=xxx;" & _ 
              "PWD=xxx;" & _ 
              "Option=3"

    cn.Open strConn

    ' Find out if the attempt to connect worked.
    If cn.State = adStateOpen Then
          MsgBox "Welcome to Pubs!"
    Else
          MsgBox "Sorry. No Pubs today."
    End If

    ' Close the connection.
    cn.Close

End Sub

感谢您的帮助!

【问题讨论】:

驱动程序看起来不对。 是……google.com.au/… 您可能还需要设置 odbc 连接。 If cnn.State 请更正为cn.State(另见cnn.Close)。发布问题可能是一个错字,但无论如何请更正它,以便人们可以专注于问题。并确保设置Option Explicit MySQL Workbench 不使用 ODBC。您的下一步是找到一种方法来测试 ODBC 连接是否有效。 【参考方案1】:

从 Excel 导出到 SQL Server。

Sub InsertInto()

'Declare some variables
Dim cnn As adodb.Connection
Dim cmd As adodb.Command
Dim strSQL As String

'Create a new Connection object
Set cnn = New adodb.Connection

'Set the connection string
cnn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=Northwind;Data Source=Excel-PC\SQLEXPRESS"
'cnn.ConnectionString = "DRIVER=SQL Server;SERVER=Excel-PC\SQLEXPRESS;DATABASE=Northwind;Trusted_Connection=Yes"


'Create a new Command object
Set cmd = New adodb.Command

'Open the Connection to the database
cnn.Open

'Associate the command with the connection
cmd.ActiveConnection = cnn

'Tell the Command we are giving it a bit of SQL to run, not a stored procedure
cmd.CommandType = adCmdText

'Create the SQL
strSQL = "UPDATE TBL SET JOIN_DT = '2013-01-22' WHERE EMPID = 2"

'Pass the SQL to the Command object
cmd.CommandText = strSQL


'Execute the bit of SQL to update the database
cmd.Execute

'Close the connection again
cnn.Close

'Remove the objects
Set cmd = Nothing
Set cnn = Nothing

End Sub

或。 . . .

Import from SQL Server into Excel . . . . .


Sub Create_Connectionstring()

Dim objDL As MSDASC.DataLinks
Dim cnt As ADODB.Connection
Dim stConnect As String 'Instantiate the objects.

Set objDL = New MSDASC.DataLinks
Set cnt = New ADODB.Connection

On Error GoTo Error_Handling 'Show the Data-link wizard
stConnect = objDL.PromptNew 'Test the connection.
cnt.Open stConnect 'Print the string to the VBE Immediate Window.
Debug.Print stConnect 'Release the objects from memory.
exitHere:
    cnt.Close
    Set cnt = Nothing
    Set objDL = Nothing
Exit Sub

Error_Handling: 'If the user cancel the operation.
If Err.Number = 91 Then
    Resume exitHere
End If
End Sub

【讨论】:

原发帖人指定MySQL。 是的,确实是我正在尝试连接的 MySQL 数据库。

以上是关于从 EXCEL 连接到 SQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章

VB - 连接到本地 SQL 服务器并从 excel 将数据加载到表中

使用 VBA 将 Excel 表连接到 SQL Server

无法从 Excel 中的 VBA 查询连接到 Access 数据库

无法通过Excel VBA连接到SQL数据库。

将 Mac Excel 2016 连接到本地 MAMP SQL 数据库

将Mac Excel 2016连接到本地MAMP SQL数据库