我需要以编程方式更改Access数据库密码,我正在使用此代码(例如简化):
Dim adoCn As ADODB.Connection
Set adoCn = New ADODB.Connection
adoCn.Mode = adModeShareExclusive
adoCn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb";JET OLEDB:Database Password=TEST;"
adoCn.Execute "ALTER DATABASE PASSWORD p@ssword TEST;"
adoCn.Close
这会在{1}}的执行行中落空。
经过一些测试后,似乎只有£和_符号可以在密码中用作任何其他符号 - $%^& *()+?!@ - 抛出错误。
有没有办法逃避密码,以便它可以接受其他字符?我已经尝试了'p @ ssword'和[p @ ssword],但都没有效果。
答案 0 :(得分:3)
在Jet SQL中,严重重音字符可以用作标识符转义或引用表,字段,甚至用户和组的名称,但它也适用于ALTER DATABASE PASSWORD
SQL语句中的密码。
ALTER DATABASE PASSWORD `!@#$%^&*(` NULL
我们习惯于括号[]引用,但很多SQL方言都很满意,喜欢甚至需要严肃的口音。我认为安装程序数据库SQL需要它并且不会接受括号。