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

问题描述:

使用C,我试图通过SQLConfigDataSource函数使用ODBC创建Access 2007数据库文件。如何在创建数据库时指定ODBC访问驱动程序格式

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管理器中指定12.x(accdb)或4.x(mdb),如下图所示,但是如何通过ODBC API执行此操作?

Create Database with ODBC Microsoft Access drivers

我能够创建用户DSN,但我觉得这也是错误的格式,因为我没有测试它。

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

使用CREATE_DBV12:

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

你有此信息的来源或者是它只是一个猜测?我搜索并搜索了这些信息,但从未找到'CREATE_DBV12'属性。即使现在我知道这一点,谷歌搜索'CREATE_DBV12'返回0结果。 – Monty0018 2012-02-15 04:45:32

+0

我结束了在记事本中打开Microsoft Access ODBC dll(ACEODBC.DLL)并搜索字符串常量。我首先搜索了CREATE_DB(它们是unicode字符串,因此我搜索了“C R E A”)常量,而且我碰到的第一件事是CREATE_DBV12,所以我尝试了它,并且它工作正常。有可能让你浏览字符串常量的工具,但对我来说,在记事本中打开DLL并不是什么大问题。 – 2012-02-15 12:18:48