gpt4 book ai didi

mysql - 在 ms-access 中与 mysql 服务器的无 DSN 连接不记得用户名和密码

转载 作者:行者123 更新时间:2023-11-29 07:08:59 25 4
gpt4 key购买 nike

为了便于分发,我希望所有 mysql 链接表都是无 DSN 的。我还希望能够轻松地将表重新链接到不同的服务器(出于测试目的),所以我在 vba 代码中进行链接设置。这是我用来设置/刷新任何链接的代码:

Private Sub relink_mysql_tables(mysql_connection As String)
Dim db As Database
Set db = CurrentDb()
Dim tbldef As TableDef
For Each tbldef In db.TableDefs
If (tbldef.Attributes And TableDefAttributeEnum.dbAttachedODBC) Then
tbldef.Connect = mysql_connection
tbldef.RefreshLink
End If
Next
End Sub

我使用的 mysql_connection 字符串是:

DRIVER={MySQL ODBC 5.1 Driver};Server=myserver;Database=mydatabase;Uid=myusername;Pwd=mypassword;Option=3

一切都很好,一切正常,直到我关闭 ms-access 并重新打开它。用户名和密码好像忘记了。例如,如果我尝试打开一个链接表,我会看到一个 ODBC 连接器弹出窗口,要求我输入用户名和密码。

我注意到在运行上面的重新链接代码后,如果我将鼠标指针悬停在链接表(在本例中称为“tender”的表)上,它会显示当前连接字符串,但省略了用户名和密码:

ODBC;DRIVER={MySQL ODBC 5.1 Driver};Server=myserver;Database=mydatabase;Option=3;TABLE=tender

我在别处读到,将“;Persist Security Info=True”添加到连接字符串会起作用,但它不起作用!下次重启ms-access时,用户名和密码还是忘记了。我当前的解决方案是每次启动数据库时都重新运行重新链接代码,但这对我来说似乎是不必要的开销。是否有一种 Access 方式可以记住链接表中的用户名和密码?

顺便说一句,我使用的是Mysql5.5和Access2007。

最佳答案

我在这个 microsoft article 的帮助下找到了答案.不要使用 RefreshLink 方法,而是使用 dbAttachedODBC 选项删除并重新创建链接:

Public Sub relink_mysql_tables(mysql_connection As String)

Dim db As Database
Dim tblDef As TableDef
Dim sLocalTableName As String
Dim sRemoteTableName As String

' new collection '
Dim newTableDefs As New Collection

' current database '
Set db = CurrentDb()

' create new table defs '
For Each tblDef In db.TableDefs
If (tblDef.Attributes And TableDefAttributeEnum.dbAttachedODBC) Then
sLocalTableName = tblDef.Name
sRemoteTableName = tblDef.SourceTableName

' create new linked table def '
Set tblDef = db.CreateTableDef(sLocalTableName, dbAttachSavePWD, sRemoteTableName, mysql_connection)
newTableDefs.Add tblDef

End If
Next

' delete old table defs '
For Each tblDef In newTableDefs
db.TableDefs.Delete tblDef.Name
Next

' add new table defs to current database '
For Each tblDef In newTableDefs
db.TableDefs.Append tblDef
Next

连接字符串与之前相同,但添加了前缀“ODBC;”:

ODBC;DRIVER={MySQL ODBC 5.1 Driver};Server=myserver;Database=mydatabase;Uid=myusername;Pwd=mypassword;Option=3

关于mysql - 在 ms-access 中与 mysql 服务器的无 DSN 连接不记得用户名和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5695194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com