使用Java执行静态和动态SQL

Db2 for z/OS® 支持SQLJ和。 JDBC 一般来说,Java™应用程序使用SQLJ处理静态SQL,使用 JDBC 处理动态SQL,使用 PureQuery 处理静态和动态SQL。

使用Java编程语言,您将获得以下关键优势:

  • 您可以在任何支持Java的平台上编写应用程序,并在任何安装了Java开发工具包(JDK)的平台上运行它。
  • 您只需开发一次应用程序,即可在任何地方运行,这具有以下潜在优势:
    • 降低开发成本
    • 降低维护成本
    • 降低系统管理成本
    • 灵活支持各种硬件和软件配置

下表显示了SQLJ和 JDBC 之间的主要区别。

表 1. SQLJ与 JDBC
SQLJ的特点 JDBC 特性
SQLJ遵循静态SQL模型,性能优于 JDBC。 JDBC 遵循动态SQL模型。
SQLJ源程序比等效的 JDBC 程序更小,因为SQLJ会自动生成开发人员必须在 JDBC 程序中包含的某些代码。 JDBC 源程序比等效的SQLJ程序更大,因为开发人员必须在 程序中包含的某些代码是由SQLJ自动生成的。 JDBC
SQLJ在程序准备过程中检查数据类型,并在表列和Java主机表达式之间强制执行强类型。 JDBC 在编译时无需检查数据类型即可在SQL表中传递值。
在SQLJ程序中,您可以在SQL语句中嵌入Java主机表达式。 JDBC 每个绑定变量都需要单独的语句,并通过位置编号指定绑定。
SQLJ具有静态SQL授权检查的优势。 在SQLJ中,运行SQL语句的授权ID是计划或包的所有者。 Db2 在绑定时检查表权限。 由于 JDBC 使用动态SQL,SQL语句运行所需的授权ID在运行时才会确定,因此,在运行时才会对表权限进行授权检查。