使用Java执行静态和动态SQL
Db2 for z/OS® 支持SQLJ和。 JDBC 一般来说,Java™应用程序使用SQLJ处理静态SQL,使用 JDBC 处理动态SQL,使用 PureQuery 处理静态和动态SQL。
使用Java编程语言,您将获得以下关键优势:
- 您可以在任何支持Java的平台上编写应用程序,并在任何安装了Java开发工具包(JDK)的平台上运行它。
- 您只需开发一次应用程序,即可在任何地方运行,这具有以下潜在优势:
- 降低开发成本
- 降低维护成本
- 降低系统管理成本
- 灵活支持各种硬件和软件配置
下表显示了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在运行时才会确定,因此,在运行时才会对表权限进行授权检查。 |