第一部分 Oracle8iSQLJ基础 1
第1章 Oracle8iSQLJ介绍 1
1.1 Java语言与Internet数据库处理的关系 2
1.2 Java与Oracle8I数据库服务器的紧密集成 3
1.3 Java中的静态嵌入式SQL模型:SQLJ 5
1.3.1 动态SQL 6
1.3.2 一胸态嵌入式SQL 7
1.3.3 SQLJ概述 7
1.3.4 SQLJ与JDBC的比较 16
1.4 在胖、瘦客户端及服务器端使用SQLJ 17
1.4.1 胖客户端应用程序 17
1.4.2 瘦客户端应用程序 18
1.4.3 服务器端应用程序 19
1.5 其他嵌入式SQL与SQLJ的比较 19
第2章 SQLJ程序开发 21
2.1 在SQLJ程度台执行非SELECT的SQL语句 21
2.1.1 连接数据库 21
2.1.2 不返回结果的SQLJ可执行语句 23
2.1.3 SQLJ装入程序:LoadAccountList.splj 23
2.1.4 翻译和运行程序LoadAccountList.sqlj 28
2.2 在SQLJ程序中使用命名迭代器执行SELECT语句 28
2.2.1 命名迭代器处理步骤 28
2.2.2 使用命名迭代器的SQLJ检索程序:AcctsForProjs.sqlj 30
2.3 在SQLJ程序中使用定位迭代器执行SELECT语句 34
2.3.1 命名迭代器和定位迭代器的差别 34
2.3.2 一个用定位迭代器SQLJ检索程序:AcctsForPorjs2.sqlj 35
2.4 SQLJ翻译过程 39
2.5 sqlj命令行选项和属性文件 40
2.5.1 sqlj命令行选项 40
2.5.2 用属性评论年指定SQLJ选项 41
第3章 SQLJ基本程序设计 44
3.1 不带结果表达式的SQLJ语句:SQLJDDL和非SELECT的DML命令 44
3.1.1 SQLJDDL命令 45
3.1.2 SQLJDML命令 45
3.2 没有结果表达式的SQLJ可执行语句:SQLJ事务控制命令 52
3.2.1 auto-commit 52
3.2.2 SET TRANSACTION语句 53
3.3 没有结果表达式的可执行SQLJ语句:匿名PL/SQL块和存储过程调用 54
3.3.1 匿名PL/SQL块 54
3.3.2 存储过程调用 55
3.4 没有结果表达式的可执行SQLJ语句:SET、FETCH和SELECT INTO语句 56
3.4.1 SET语句 56
3.4.2 SELECT INTO语句 57
3.4.3 FETCH语句 57
3.5 有结果表达式的可执行SQLJ语句:SELECT语句 58
3.5.1 迭代器声明的语法 58
3.5.2 查询子句的语法 61
3.5.3 SQLJ检索程序:AcctsForProjs3.sqlj 62
3.5.4 用嵌套游标输出填充迭代器 66
3.5.5 SQLJ对ref cursor类型的支持 73
3.6 带有结果表达式的可执行SQLJ语句:存储函数调用 75
3.7 宿主表达式和结果表达式在运行时的求值 76
3.8 JDBC和SQLJ异常类 76
3.9 其他有用的JDBC和SQLJ类 77
第二部分 用于关系型数据处理的高级SQLJ 79
第4章 开发SQLJ存储程序和触发器 79
4.1 开发客户端的SQLJ存储子程序 79
4.1.1 编写服务器端应用程序的注意事项 80
4.1.2 Emplnsert.sqlj:服务器端应用程序示例 81
4.1.3 客户端SQLJ源文件的翻译 83
4.1.4 把类和资源装入服务器 83
4.1.5 检查模式对象是否已装入服务器 84
4.1.6 为存储子程序建顶层SQL包装 84
4.1.7 FuncTest.sqlj:调用存储子程序的简单应用程序 87
4.1.8 开发步骤的总结 88
4.2 在PL/SQL包中创建SQL存储子程序包装 89
4.3 从SQL语句和PL/SQL块中调用SQLJ存储子程序包装 94
4.3.1 从PL/SQL块中调用存储子程序 94
4.3.2 用SQL DML命令调用存储函数 94
4.3.3 用SQL的CALL语句调用存储过程 95
4.4 在Oracle8I服务器中装入并翻译SQLJ源文件 100
4.4.1 SQLJ服务器翻译 101
4.4.2 设置服务器翻译器的选项 101
4.4.3 服务器翻译器和 loadjava产生的输出 101
4.4.4 SQLJ服务器翻译器的错误输出 101
4.5 实用程序dropjava 101
4.6 对比用SQLJ和用PL/SQL实现存储子程序的优缺点 102
第5章 高级SQLJ的使用 104
5.1 使用SQLJ连接环境类建立数据库连接 104
5.2 使用SQLJ DefaultConetext类 107
5.3 用SQLJ管理多数据库连接 113
5.4 SQLJ应用 121
5.5 SQLJ胖客户端应用 122
5.6 在应用服务器中使用SQLJ 122
5.7 SQLJ瘦客户 123
5.8 在Java应用中使用SQLJ 123
5.9 在Java applet中使用SQLJ 127
5.10 SQLJ applet 130
5.11 在Oracle8I数据服务器中使用SQLJ:SQLJ存储过程 132
第6章 SQLJ高级特性 137
6.1 SQLJ流 137
6.2 通过流类将数据存放到数据库中 138
6.2.1 把文件存入数据库 138
6.2.2 按流从数据库中检索数据 141
6.2.3 从数据库中提取存储的文件 142
6.3 LOB-大型对象 145
6.3.1 把文件装入BLOB列 146
6.3.2 从BLOB列提取数据并写入磁盘 147
6.3.3 在SQLJ中使用DBMS_LOB Oracle包 151
6.3.4 在SQLJ中使用BFILE 152
6.4 多线程 155
6.4.1 使用SQLJ的多线程 155
6.4.2 多线程与运行环境 155
6.4.3 SQLJ应用与多线程 156
6.5 SQLJ和JDBC的互操作性 158
6.5.1 将JDBC连接转换为SQLJ连接 159
6.5.2 把SQLJ连接转换为JDBC连接 161
6.5.3 共享和关闭连接 162
6.5.4 SQLJ迭代器和JDBC结果集的互操作性 162
第三部分 SQLJ和对象的使用 167
第7章 使用SQLJ进行对象一关系型数据处理 167
7.1 Oracle8I用户定义的SQL对象类型 167
7.1.1 创建对象类型对象表 168
7.1.2 对象表的插入语句 170
7.1.3 对象表的SELECT和UPDATE语句 171
7.2 在SQLJ中处理SQL对象类型 172
7.2.1 使用Jpublisher为用户定义的类型创建Java自定义类 172
7.2.2 用于对象类型和引用类型的Java自定义类方法 174
7.2.3 ObjectTypes.sqlj:处理包含用户定义的SQL对象类型表的SQLJ程序 175
7.2.4 带有SQL对象类型参数和返回值的SQLJ存储子程序 181
7.3 Oracle8I用户定义的SQL集合类型 183
7.4 在SQLJ中处理SQL集合类型 187
第8章 SQLJ商业和科学对象 200
8.1 分布式计算系统的基本概念 200
8.2 设计和开发SQLJ基本组件的对象 202
8.2.1 什么是组件 203
8.2.2 什么是组件的模型 203
8.2.3 开发SQLJ组件 204
8.3 使用Java远程方法调用SQLJ组件 216
8.3.1 什么是RMI 216
8.3.2 RMI对象组成 216
8.3.3 开发RMI对象 217
8.4 使用SQLJ实现的Enterprise JavaBeans对象 226
8.4.1 什么是Enterprise JavaBeans 226
8.4.2 Enterprise JavaBeans的角色 227
8.4.3 Enterprise JavaBeans的类型 227
8.4.4 Enterprise JavaBeans对象合成 228
8.4.5 开发企业会话Bean应用 229
8.5 通过SQLJ的实现使用CORBA对象 240
8.5.1 什么是CORBA 241
8.5.2 CORBA对象合成 242
8.5.3 开发CRBA对象 243
第四部分 有效使用SQLJ 253
第9章 SQLJ应用:性能优化 253
9.1 扩展ConnectionManager类 253
9.2 开发高效SQLJ程序 257
9.2.1 改善性能 257
9.2.2 SQLJ的行预取 258
9.3 用Oracle优化器优化SQLJ语句 263
9.4 减少网络流量的其他方法 263
第10章 Oracle8I开发工具综述 265
10.1 Oracle因特网开发工具简介 265
10.1.1 Oracle Designer工具 265
10.1.2 Oracle WebDB 266
10.1.3 Oracle JDeveloper 266
10.2 使用长Jdeveloper开发SQLJ应用 267
第五部分 附录 281
附录A Oracle SQL基础 281
附录B Java简介 301
附录C JDBC简介 318
附录D SQLJ快速考指南 324