创建数据库时如何指定 ODBC 访问驱动程序格式

Posted

技术标签:

【中文标题】创建数据库时如何指定 ODBC 访问驱动程序格式【英文标题】:How do I specify the ODBC Access Driver Format when creating the database 【发布时间】:2012-02-09 04:55:55 【问题描述】:

使用 C,我试图通过 SQLConfigDataSource 函数使用 ODBC 创建一个 Access 2007 数据库文件。

char szDriverName[] = "Microsoft Access Driver (*.mdb, *.accdb)";
char szAttr[] = "CREATE_DB=c:\access2007.accdb";
SQLConfigDataSource(NULL, ODBC_ADD_DSN, szDriverName, szAttr);

我希望新数据库的文件扩展名是 .accdb,但是当我运行上面的代码时,我总是得到 c:\access2007.accdb.mdb。我可以从 ODBC Admin 中指定 12.x (accdb) 或 4.x (mdb),如下图所示,但是如何通过 ODBC API 来实现呢?

我可以创建用户 DSN,但是我觉得它的格式也不正确,因为我没有测试过。

如何使用 ODBC/Access API 定义格式版本?

【问题讨论】:

【参考方案1】:

使用 CREATE_DBV12:

char szDriverName[] = "Microsoft Access Driver (*.mdb, *.accdb)";
char szAttr[] = "CREATE_DBV12=c:\access2007.accdb";
SQLConfigDataSource(NULL, ODBC_ADD_DSN, szDriverName, szAttr);

【讨论】:

您有此信息的来源还是只是猜测?我搜索并搜索了此信息,但从未找到“CREATE_DBV12”属性。即使现在我知道这一点,谷歌搜索“CREATE_DBV12”仍返回 0 个结果。 我最终在记事本中打开了 Microsoft Access ODBC dll (ACEODBC.DLL) 并搜索了字符串常量。我首先搜索了 CREATE_DB(它们是 unicode 字符串,所以我搜索了“C R E A”)常量,我首先找到的是 CREATE_DBV12,所以我尝试了它并且它起作用了。可能有一些工具可以让您浏览字符串常量,但对我来说,在记事本中打开 DLL 并不是什么大问题。

以上是关于创建数据库时如何指定 ODBC 访问驱动程序格式的主要内容,如果未能解决你的问题,请参考以下文章

未发现数据源名称并且未指定默认驱动程序问题如何解决

请问VC++中如何连接odbc数据源,具体步骤!谢谢!

通过 JDBC/ODBC 访问数据库时,您应该为每个请求创建和关闭连接吗?

访问 ODBC 问题:ODBC--调用失败

PDO_ODBC:未找到数据源名称且未指定默认驱动程序

[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序