【问题标题】:Embedded SQL in Dev C++ [closed]Dev C++ 中的嵌入式 SQL [关闭]
【发布时间】:2017-06-19 04:50:43
【问题描述】:

所以我在嵌入式 SQL 部分(参见:http://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.apdv.samptop.doc/doc/r0011556.html)中有这个从 IBM 获得的示例 C++ 程序(如何连接和断开与数据库的连接)

我正在使用 Dev C++,每当我编译它时,它都会给我一个错误。它说:

[错误] 'EXEC' 没有命名类型

有人知道这是什么原因吗?这是缺少的头文件吗?

EDIT1:这是代码的直接链接:http://www.ibm.com/support/knowledgecenter/en/SSEPGG_9.7.0/com.ibm.db2.luw.apdv.sample.doc/doc/cpp/s-dbconn-sqC.html

【问题讨论】:

  • 关于如何重现错误的细节太少,例如没有代码(参见 [stackoverflow.com/help/mcve](MCVE))。根据错误,我假设您已尝试将 SQL 请求编译为 C++ 代码。
  • 对不起,如果它让大家感到困惑。我提供的链接包含我正在尝试编译的代码(那是主页,您仍然必须在那里浏览它)。这是直接链接:ibm.com/support/knowledgecenter/en/SSEPGG_9.7.0/…
  • 是否还有其他错误,或者您提供的唯一行是完整的编译日志?
  • 我给的后面有几个错误,但我给的是第一个。进一步检查日志,“EXEC”错误多次出现(主要是因为 EXEC SQL 也被多次使用)。剩下的错误是某种“未在此范围内声明”的类型定义

标签: c++ compiler-errors db2 dev-c++ embedded-sql


【解决方案1】:

问题是您链接的示例不是普通的 C++。这是 C++ 中 IBM's embedded SQL 的一个示例,它需要使用 IBM 提供的工具进行一些预处理,然后才能将其输入不了解嵌入式 SQL 的编译器或标准 C++ IDE(如 Dev C++)。引用链接(强调我的):

构建嵌入式 SQL 应用程序涉及两个先决步骤 在应用程序编译和链接之前

  1. 使用 DB2 预编译器准备包含嵌入式 SQL 语句的源文件。

    PREP (PRECOMPILE) 命令用于调用 DB2 预编译器,该预编译器读取您的源代码,解析并转换 对 DB2 运行时服务 API 调用的嵌入式 SQL 语句,以及 最后将输出写入新修改的源文件。这 预编译器为 SQL 语句生成访问计划,这些计划是 作为一个包一起存储在数据库中。

  2. 将应用程序中的语句绑定到目标数据库。

    在预编译期间默认完成绑定(PREP 命令)。如果要延迟绑定(例如,运行 BIND 命令稍后),则需要在 PREP 指定 BINDFILE 选项 生成绑定文件的时间。

一旦您预编译并绑定了嵌入式 SQL 应用程序,它 已准备好使用特定于宿主语言的编译和链接 开发工具。

因此,您必须使用一些 IBM 的工具(大概称为 PREP)对示例进行预处理,然后才能获得有效的 C++ 代码。我不确定让 Dev C++ 自动使用它是否容易或可能。

【讨论】:

  • 我明白了。感谢您的明确解释。我会尝试研究是否可以在 DevC++ 中进行预编译
  • @HanSoloQue 尝试寻找“预编译钩子”或“预编译操作”之类的内容。
  • prep 是 DB2 CLP 命令,您需要为此安装 DB2 客户端。该安装还包含用于构建嵌入式 SQL 程序的示例脚本。
猜你喜欢
  • 2010-10-08
  • 1970-01-01
  • 2011-03-14
  • 2014-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多