[ad_1]
我正在尝试编写一个程序,使用 CDatabase 连接到本地 Access 数据库而不设置 DSN(当我使用 DSN 时它工作正常,但我不想为每个数据库创建一个)。 我还没有发现任何可以在不弹出对话框的情况下工作的东西。
我尝试过的:
C++
CDatabase db; db.OpenEx("ODBC;Driver={Microsoft Access Driver (*.mdb)};Dbq=XXX;Uid=Admin;Pwd=;");
取自 www.connectionstrings.com
和
C++
CDatabase db; db.OpenEx("ODBC;DSN=working;DBQ=XXX;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;");
成功打开数据库后从 db.GetConnect() 获取
C++
db.OpenEx("DSN=YYY");
请注意,我的数据库文件名 XXX 包含空格; 我尝试将其括在单引号中,同样是后一个示例中的“MS Access”,但这没有帮助。 我还尝试添加“SERVER=localhost;” 但这也无济于事。
谁能解释一下有什么问题或遗漏吗?
解决方案1
从评论中发布解决方案以结束问题。
尝试使用
C#
db.OpenEx("Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=XXX");
注意事项:
– 参数对 Uid=
和 Pwd=
仅当 MS Access 数据库受密码保护时才需要,否则完全忽略它们
– 你需要 *.accdb
在驱动程序中,因为这是它的名称 – 即使您的数据库是 .mdb
– XXX 必须是数据库的完整路径名称,包括扩展名
除非您明确使用仅在 .mdb
您可能需要考虑更新到的文件 .accdb
格式。 有关差异的更多详细信息,请访问 我应该使用哪种 Access 文件格式? – 微软支持[^]
[ad_2]
コメント