代码之家  ›  专栏  ›  技术社区  ›  Mark Lakewood

动态SQL与静态SQL

  •  1
  • Mark Lakewood  · 技术社区  · 17 年前

    在我们当前的代码库中,我们使用MFCDb类连接到DB2。这些都是由另一个开发团队传递给我们的旧代码,所以我们知道一些历史,但不是全部。

    执行SQL查询的另一种方法是使用dbclass直接在数据库类上执行它们。执行SQL(字符串)。

    我们想知道每种方法的优缺点是什么。从我们的角度来看,执行ExecuteSQL()调用要容易得多,因为我们不必编写另一个类等,但必须有充分的理由采取另一种方式。我们只是不确定它们是什么。

    更新----

    我想我可能误解了动态和静态SQL。我认为我们的代码总是使用Dynamic,所以我的问题真的变成了,我应该自己构造SQL字符串并执行ExecuteSQL(),还是应该像mfc的记录集类那样,将其抽象到数据库中每个表的类中?

    2 回复  |  直到 17 年前
        1
  •  1
  •   Aidan Ryan    17 年前

    这 ATL OLE DB consumer 数据库类绝对是正确的选择。除了注入的风险(Skurmedel提到)之外,成堆的字符串连接查询将无法快速维护。

    虽然ATL类最初可能很乏味,但它们提供了强类型和命名列、结果导航、连接和会话管理等优点。

        2
  •  0
  •   Skurmedel    17 年前

    如果有很多SQL语句,我会尝试将其抽象出来。管理数十个不同的SQL查询很快就会变得乏味。此外,通过这种方式验证输入也更容易。