如何通过无 DSN 连接使用 cdatabase


我正在尝试编写一个程序,使用 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 文件格式? – 微软支持[^]

コメント

タイトルとURLをコピーしました