如何在创建数据库时指定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执行此操作?
我能够创建用户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);
你有此信息的来源或者是它只是一个猜测?我搜索并搜索了这些信息,但从未找到'CREATE_DBV12'属性。即使现在我知道这一点,谷歌搜索'CREATE_DBV12'返回0结果。 – Monty0018 2012-02-15 04:45:32
我结束了在记事本中打开Microsoft Access ODBC dll(ACEODBC.DLL)并搜索字符串常量。我首先搜索了CREATE_DB(它们是unicode字符串,因此我搜索了“C R E A”)常量,而且我碰到的第一件事是CREATE_DBV12,所以我尝试了它,并且它工作正常。有可能让你浏览字符串常量的工具,但对我来说,在记事本中打开DLL并不是什么大问题。 – 2012-02-15 12:18:48