gpt4 book ai didi

c++ - 我在哪里可以获得有关 ODBC 和 Access 数据库的高质量信息?

转载 作者:行者123 更新时间:2023-11-30 04:30:25 25 4
gpt4 key购买 nike

从哪里可以获得有关 ODBC 和 Access 数据库的高质量信息?

多年来,我一直在使用来自 MFC/C++/Java 的 ODBC 从事各种项目。

目前,我有一个 C++/MFC 项目,它使用自定义的 MFC 层动态连接到连接到 Access 2000 dbm 文件的 ODBC DSN。

这通常有效。

但是,我通常会收到如下警告:

DBMS: ACCESS Version: 04.00.0000 ODBC Driver Manager Version: 03.80.0000 Optional feature not implemented State:S1C00,Native:106,Origin:[Microsoft][ODBC Microsoft Access Driver]

Warning: Driver does not support requested concurrency. Optional feature not implemented State:S1C00,Native:106,Origin:[Microsoft][ODBC Microsoft Access Driver]

现在,当我们的软件尝试创建 View 时,我得到以下信息:

General Warning Unable to open registry key 'Temporary (volatile) Jet DSN for pr ocess 0x18fc Thread 0xc0 DBC 0x8c4cfc Jet'. State:01000,Native:1,Origin:[Microsoft][ODBC Microsoft Access Driver]

DBMS: ACCESS Version: 04.00.0000 ODBC Driver Manager Version: 03.80.0000 Executing SQL: create view SPEC as select CALNAME as TEST, CARDNUMBER, CARTONSTYLE as CARTON, CCAL as FLUTE, CORRDIR, CUSTOMERID, DESCRIPTION as DESCRIPTIO, DESIGNER, DESIGNNUM, JOINTSIZE, JOINTTYPE, PANEL_D as DEPTH, PANEL_L as LENGTH, PANEL_W as WIDTH, RULRULX as DSIZEX, RULRULY as DSIZEY, SHEETUX as SIZEX, SHEETUY as SIZEY, SHEETX as GROSSX, SHEETY as GROSSY from "Designs" where DESIGNNUM is not null
Warning: ODBC Success With Info, Driver's SQLSetConnectAttr failed State:IM006,Native:0,Origin:[Microsoft][ODBC Driver Manager]

General Warning Unable to open registry key 'Temporary (volatile) Jet DSN for pr ocess 0x18fc Thread 0xc0 DBC 0x8c4cfc Jet'. State:01000,Native:1,Origin:[Microsoft][ODBC Microsoft Access Driver]

对于第一部分,关于未实现可选功能和未实现并发状态的警告(可能是相同的潜在问题),我不知道我的软件甚至要求什么并发功能?什么样的并发状态是合适的?一个人如何要求“正确”的?是否有 Windows 版本与要请求的适当并发状态的表格?

对于第二部分,关于具体的因为无法打开注册表项导致创建 View 失败:嗯?!谁未能打开哪个注册表项?

我找到了一些关于需要授予 IUSR 对“windows NT 临时文件夹”的完全权限的信息。对于桌面应用程序来说,这听起来像是一个需要关注的可怕问题。在操作存在于用户可读/可写路径中的数据库文件时,使用 ODBC DSN 的桌面应用程序应该如何考虑用户权限?允许用户执行此 SQL 还需要哪些权限?由于用户已经能够在数据库中的现有表中添加和删除列和行,还需要做什么?

此代码用于在 XP 下工作。所以我不得不假设 Vista 和/或 Win 7 添加了一些现在阻止此功能的安全措施。

我感兴趣的是:

  1. 来自 Microsoft 的规范引用资料,实际记录了他们的各种 ODBC 访问接口(interface)、选项、版本、主机问题等。
  2. 有关并发警告的具体信息。
  3. 有关在访问权限 2000 dbm 中尝试创建 View 时明显的权限失败的具体信息。
  4. 在不进行全面检修或技术更换的情况下,提出对上述内容进行现代化改造的建议。也就是说,我很乐意将 Access 文件更新为 2003 或 2007 或其他版本,或者可能将后端切换到 SQL Server Lite,但我无法证明从 ODBC 更改为某些替代中间件是合理的(这不值得花时间和风险)。

感谢您提供的任何想法或帮助。

最佳答案

我们有一个动态使用 ODBC 访问数据库的应用程序。

  1. Microsoft 有关于 odbc 的很好的文档 http://msdn.microsoft.com/en-us/library/s9ds2ktb(v=vs.80).aspx
    您还应该查看CRecordsetCDatabase 文档 http://msdn.microsoft.com/en-us/library/1hkkwdf0(v=vs.80).aspx
    http://msdn.microsoft.com/en-us/library/2dhc1abk(v=VS.80).aspx

  2. 对于并发问题,它经常发生在您打开带有错误选项的CRecordset 时。在我工作的地方,我们通常使用以下选项打开记录集

RecordsetToUse.Open(CRecordset::dynaset, "SQL Statement or NULL to use the DefaultSQL", CRecordset::skipDeletedRecords);

如果使用记录集进行快速只读访问,还可以使用

RecordsetToUse.Open(CRecordset::forwardOnly, "SQL Statement or NULL to use the DefaultSQL", CRecordset::readOnly);

3。对于创建 View 问题,ODBC 似乎不支持创建 View ...我认为,另一方面,您可以使用 ADODB ( http://www.codeproject.com/KB/database/adoclasses.aspx ) 来做到这一点

关于c++ - 我在哪里可以获得有关 ODBC 和 Access 数据库的高质量信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8703690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com