我的C ++应用程序需要处理属于不同版本的SSCE数据库文件。现在,我无法知道数据库的版本。
问题是,如果OLEDB SSCE提供程序的版本与数据库文件的版本不匹配,IDBInitialize::Initialize()
将失败并显示E_FAIL
。必须获取res {IErrorInfo
对象才能获得有意义的错误消息。
重点是E_FAIL
的错误代码并没有告诉我失败是由于版本不匹配还是由于其他原因造成的。在第一种情况下,我应该使用另一个SSCE提供程序重试,而在第二种情况下,应用程序应该终止。
我该如何实现这个逻辑?在调用IDBInitialize::Initialize()
检查版本兼容性之前,是否可以调用某些API?有没有办法获得真正的错误代码而不是不透明的E_FAIL
?
感谢。
答案 0 :(得分:1)
您可以查看文件的第一个字节 - 请参阅C#中的此示例 - http://erikej.blogspot.com/2010/08/how-to-upgrade-version-3x-database-file.html