从 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 数据库