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

| 为了便于分发,我希望所有的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时,仍然忘记了用户名和密码。我当前的解决方案是每次启动数据库时都重新运行重新链接代码,但这对我来说似乎是不必要的开销。是一种用于访问链接表中的用户名和密码的访问方式吗? 顺便说一下,我正在使用Mysql5.5和Access2007。     
已邀请:
我在这篇微软文章的帮助下找到了答案。不要使用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
    

要回复问题请先登录注册