前言页 1
译者序 1
第1章 引言 1
1.1 书中的约定 1
1.2 获取borland.com开发人员支持 1
第一部分 开发数据库应用程序 3
第2章 开发数据库应用程序 3
第3章 安装与设置用于数据库应用程序的JBuilder 6
3.1 安装JBuilder、JDBC与JDBC-ODBC桥 6
3.1.1 安装JDBC和JDBC-ODBC桥 7
3.1.2 连接到数据库 7
3.2 安装JBuilder范例文件 8
3.3 安装Local InterBase服务器 8
3.3.3 使用InterBase的技巧 9
3.3.2 停止InterBase服务器 9
3.3.1 启动InterBase服务器 9
3.4 使用InterClient 10
3.5 教程中JDBC数据库连接的故障诊断 12
第4章 理解JBuilder数据库应用程序 14
4.1 理解JBuilder的DataExpress体系结构 15
4.2 borland.com与数据库相关的软件包 17
第5章 连接到数据库 21
5.1 教程:使用JDBC-ODBC桥与数据库连接 22
5.1.1 把数据库组件加到应用程序中 23
5.1.2 设置数据库连接属性 23
5.1.3 在应用程序中使用数据库组件 25
5.2 教程:使用纯JavaJDBC驱动程序与数据库连接 25
5.2.1 为数据库教程设置InterClient 25
5.2.2 在JBuilder中使用InterClient纯Java JDBC驱动程序 26
第6章 访问数据 29
6.1.1 创建应用程序结构 31
6.1 使用文本文件介绍数据库教程 31
6.1.2 添加UI组件到应用程序 32
6.1.3 添加DataExpress组件到应用程序 35
6.1.4 设置属性连接组件 36
6.1.5 编译、运行及调试程序 38
6.1.6 小结 39
6.2 查询数据库 40
6.2.1 教程:使用JBuilderUI查询数据库 41
6.2.2 增强数据集性能 43
6.2.3 查询存留的元数据 44
6.2.4 打开和关闭数据集 45
6.2.5 保证查询是可更新的 45
6.2.6 在查询对话框中设置属性 45
6.3.1 教程:查询参数化 49
6.3 使用参数化查询获取数据库数据 49
6.3.2 使用参数 53
6.3.3 用新参数再次执行参数化查询 54
6.3.4 绑定参数 54
6.3.5 按主-从关系的参数化查询 55
6.4 使用存储过程获取数据 55
6.4.1 教程:用存储过程访问数据 56
6.4.2 讨论存储过程转义序列、SQL语句及服务器指定过程调用 58
6.4.3 手工为教程创建表和过程 59
6.4.4 示例:使用InterBase存储过程 61
6.4.5 示例:以Oraxle PL/SQL存储过程的方式使用参数 61
6.4.6 使用Sybase存储过程 62
6.4.7 浏览使用存储过程的范例应用程序 62
6.5 编写定制数据提供器 62
6.5.1 获得元数据 63
6.5.2 获取实际数据 64
6.6 使用列 65
6.7 优化查询 69
6.7.1 设置列属性 69
6.7.2 存留列 70
6.7.3 用存留列组合实时元数据 71
6.7.4 删除存留列 71
6.7.5 用存留列添加空列到DataSet中 72
6.7.6 在DataSet中控制列次序 72
第7章 回存修改到数据源 74
7.1 保存来自QueryDataSet的修改 75
7.2 使用存储过程将修改回存到数据源 77
7.2.1 教程:使用NavigatorControl保存修改 78
7.2.3 教程:使用ProcedureResolver保存修改 80
7.2.2 编码存储过程以处理数据解析 80
7.2.4 示例:使用带返回参数的InterBase存储过程 82
7.3 从多个表中解析数据 83
7.3.1 关于查询中表与表之间连接类型的考虑 83
7.3.2 查询字符串中表和列的引用 84
7.3.3 控制列属性的设置 84
7.3.4 如果表不能更新 84
7.3.5 用户如何指定一个表永不被修改 85
7.4 流示数据 85
7.4.1 示例:使用流式数据集 85
7.4.2 使用流式DataSet方法 86
7.5 定制默认的解析器逻辑 86
7.5.1 理解默认的解析 87
7.5.2 编写制数据解析器 90
8.1 定义主-从关系 92
第8章 创建主-从关系 92
8.2 提取从数据 93
8.2.1 一次提取所有的从数据 93
8.2.2 根据需要提取选定的从数据记录 93
8.3 在主-从数据集中编辑数据 94
8.4 创建主-从关系的步骤 94
8.5 教程:创建一个主-从关系 95
8.6 在主-从关系中保存修改 98
第9章 从文本文件中导入和导出数据 100
9.1 教程:从文本文件中导入数据 100
9.2 在编辑器中添加列到TableDataSet 102
9.3 从文本文件中导入格式化数据 102
9.4 从JDBC数据源中获取数据 103
9.5 导出数据 103
9.5.1 教程:从TableDataSet中导出数据到文本文件 104
9.5.2 教程:使用模式来导出数字、日期/时间和文本域 105
9.5.3 从QueryDataSet中导出数据到文本文件 107
9.5.4 从TableDateSet中保存修改到SQL表 107
9.5.5 保存TextDataFile装载的修改到JDBC数据源 107
第10章 使用数据模块简单化数据访问 108
10.1 使用设计工具创建数据模块 108
10.1.1 添加数据组件到数据模块 109
10.1.2 添加业务逻辑到数据模块 110
10.2 使用数据模块 111
10.3 使用Data Modeler创建数据模块 113
第11章 在DataStore中永久保持与存储数据 116
11.1 什么时候作用DataStore 116
11.2 使用DataStore Explorer 116
11.3 DataStore的操作 117
第12章 过滤、排序与定位数据 118
12.1 提供数据 119
12.2 过滤数据 120
12.2.1 教程:添加和删除过滤器 121
12.2.2 示例:在查询中以限制子句过滤 123
12.3 排序数据 124
12.3.1 在GridControl中排序数据 124
12.3.2 使用JBuilder可视化设计工具排序数据 125
12.3.3 排序与索引 125
12.3.4 在代码中排序数据 127
12.4 定位数据 127
12.4.1 使用LocatorControl定位数据 127
12.4.2 程序定位数据 129
12.4.3 用DataRow定位数据 130
12.4.4 使用定位选项 130
12.4.5 控制任何数据类型的定位 131
12.4.6 DataRow与DataSet中的列次序 132
13.1 提供一个替换的数据视图 133
第13章 把功能添加到数据库应用程序 133
13.2 为数据格式化添加编辑或显示模式 135
13.2.1 显示掩码 136
13.2.2 编辑掩码 136
13.2.3 使用掩码导入、导出数据 137
13.2.4 与模式相关的数据类型 137
13.3 使用计算列 140
13.3.1 教程:在设计器中创建计算列 141
13.3.2 用计算域合计数据 142
13.3.3 教程:用计算域合计数据 142
13.3.4 AggDescriptor 145
13.3.5 创建定制的合计事件处理器 146
13.4 创建查找 146
13.4.1 教程:使用计算列创建查找 147
13.4.2 教程:用参数选择表查找选择 149
13.5 指定应用程序中要求的数据 151
13.4.3 删除picklist域 151
13.6 使用不同的数据类型 153
第14章 其他控件和事件的使用 154
14.1 何时使用JBCL和dbSwing组件 155
14.2 使用dbSwing组件创建数据库应用程序UI 155
14.3 显示状态信息 156
14.3.1 使用状态栏控件构建应用程序 157
14.3.2 运行带状态栏的应用程序 158
14.4 同步可视控件 158
14.5 从UI控件访问数据和模型信息 159
14.6 处理错误和异常情况 159
15.1 使用DataSetData创建分布式数据库应用程序 161
15.2 理解分布式数据库应用程序示例 161
第15章 创建分布式数据库应用程序 161
15.2.1 设置示例应用程序 162
15.2.2 通过DataSetData传递元数据 162
15.2.3 把应用程序修改为3层的应用程序 163
15.2.4 其他信息 163
第16章 用Data Modeler和Application Generator创建数据库应用程序 164
16.1 用Data Modeler创建查询 164
16.1.1 添加URL 165
16.1.2 开始查询 165
16.1.3 选择具有唯一列值的行 166
16.1.4 添加Where子句 166
16.1.5 添加Order By子句 167
16.1.6 添加Group By子句 168
16.1.7 查看并编辑查询 168
16.1.8 测试查询 168
16.1.9 创建多重查询 169
16.1.10 指定主从关系 170
16.1.11 保存查询 171
16.2 用Application Generator生成数据库应用程序 171
16.2.1 准备生成应用程序 172
16.2.2 确定Java客户机布局 172
16.2.3 确定在客户端用户界面使用的控件 173
16.2.4 确定HTML客户机布局 174
16.2.5 设置数据访问选项 175
16.2.6 生成应用程序 175
16.2.7 使用生成的数据模块 177
第17章 数据库管理任务 180
17.1 使用JDBC Explorer浏览数据库表和元数据 180
17.1.2 设置驱动程序来存取远程与本地数据库 181
17.1.1 浏览数据库模式对象 181
17.1.3 执行SQL语句 182
17.1.4 使用Explorer查看并编辑表数据 183
17.2 使用JDBC Explorer完成数据库管理任务 183
17.2.1 创建SQL数据源 184
17.2.2 使用JBuilder用数据填充SQL表 185
17.2.3 删除JBuilder中的表 186
17.3 监视数据库连接 186
17.3.1 理解JKBC Monitor用户界面 186
17.3.2 在运行的应用程序中使用JDBC Monitor 187
17.4 在数据库之间移动数据 187
第18章 数据库应用程序范例 189
第19章 数据库开发问答 191
20.1 介绍CORBA 219
20.2 介绍远程方法调用 219
第20章 开发分布式应用程序 219
第二部分 开发分布式应用程序 219
20.3 本部分讲些什么 220
第21章 启动VisiBroker ORB服务 222
21.1 配置VisiBroker Smart Agent 222
21.2 设置环境变量 223
21.3 启动定位服务 223
21.4 启动VisiBroker接口库 223
21.5 启动VisiBroker命名服务 224
第22章 研究ORB服务 225
22.1 VisiBroker ORB服务 225
22.2 启动ORB Explorer 226
22.3 使用命名服务 226
22.3.1 查看命名上下文 227
22.3.3 添加命名上下文 228
22.3.2 查看名字绑定 228
22.3.4 添加名字绑定 229
22.3.5 编辑命名上下文和名字绑定 229
22.4 使用接口库 230
22.4.1 查看接口库的内容 231
22.4.2 添加与删除接口库模块 232
22.4.3 把接口库导出到IDL 232
22.5 ORB Explorer工具条图标和图符 233
23.1 分布式应用程序开发的阶段 235
第23章 用JBuilder构建分布式应用程序 235
23.2 创建IDL文件 236
23.2.1 使用现有的IDL文件 236
23.2.2 从存储在接口库中的信息创建IDL文件 236
23.2.3 创建新IDL文件 237
23.2.4 用Data Modeler创建IDL文件 237
23.3 用Applicatiom Generator生成分布式应用程序 245
23.3.2 指定Java客户机布局 247
23.3.1 准备生成服务器和客户机 247
23.3.3 指定在客户机用户界面中使用的控件 249
23.3.4 指定HTML客户机布局 249
23.3.5 设置CORBA选项 251
23.3.6 设置数据存取选项 253
23.3.7 生成应用程序 253
23.3.8 检验生成的文件 255
23.3.9 编译工程 258
23.3.10 在创建的应用程序中存取数据模块逻辑 258
23.4 不用Application Generator而创建CORBA应用程序 258
23.5 在JBuilder中运行CORBA应用程序 259
第24章 创建、运行和发布HTML客户程序 261
24.1 从IDL创建HTML客户应用程序 261
24.1.1 创建IDL文件 261
24.1.2 用Application Generator生成客户程序 262
24.1.3 编译工程 266
24.1.4 测试和配置HTML客户应用程序 267
24.2 了解HTML客户程序选项 268
24.2.1 结构操作和接口程序的属性 268
24.2.2 当前结构元素、操作参数、接口属性或结构序列导航按钮 269
第25章 在JBuilder中开发基于CORBA的分布式应用程序 270
25.1 教程:银行应用程序 271
25.1.1 开发应用程序 271
25.1.2 创建工程 271
25.1.3 为CORBA对象定义接口 272
25.1.4 编译CORBA接口定义生成Java代码 273
25.1.5 创建客户端和服务器 275
25.1.6 提供实现CORBA接口的过程 276
25.1.7 编译应用程序 277
25.2 运行和配置Java客户端应用程序 277
25.2.3 运行Java客户端应用程序 278
25.2.1 启动Smart Agent 278
25.2.2 运行服务器实现 278
25.2.4 配置应用程序 279
25.3 运行和配置HTML客户端应用程序 279
25.3.1 启动Web服务器 280
25.3.2 运行示例程序 280
25.3.3 配置客户端文件 281
25.4 其他的示例应用程序 281
25.5 关于VisiBroker和CORBA的更多信息 283
第26章 探索JBuilder中基于RMI的Java分布式应用程序 286
26.1 编写Java源文件和HTML文件 287
26.1.1 将远程类函数定义为用Java编程语言编写的接口 288
26.1.2 编写实现类和服务器类 288
26.1.3 编写使用远程服务的客户机程序 293
26.1.4 编写包含applet程序的HTML文件 295
26.1.5 编写策略文件 296
26.2 编译并发布类文件和HTML文件 296
26.3 启动RMI注册、服务器和applet程序 298
26.3.1 启动RMI自举注册 298
26.3.2 启动服务器 299
26.3.3 运行applet程序 299
第27章 用Java定义CORBA接口 301
27.1 Caffeine 301
27.2 使用java2iiop编译器 302
27.2.1 RMI与Caffeine比较 303
27.2.2 运行java2iiop由Java生成IIOP接口 304
27.2.3 完成开发过程 305
27.2.4 Dictionary示例 305
27.4.1 接口 308
27.3 原始数据类型的映射 308
27.4 复杂数据类型的映射 308
27.4.2 数组 309
27.4.3 映射Java类 309
27.4.4 可扩展结构 309
27.5 由Java生成IDL接口 310
第28章 调试分布式应用程序 311
28.1 远程调试 311
28.1.1 安装调试服务程序 312
28.1.2 设置进行调试的系统 313
28.1.3 启动远程调试会话 314
28.2 远程调试时的技巧 314
28.2.1 定时 314
28.2.5 启动调试会话 315
28.2.7 控制台窗口 315
28.2.6 非CORBA调试服务程序类路径限制 315
28.2.3 JDK版本 315
28.2.4 DKS命令行窗口的环境空间 315
28.2.2 操作系统依赖的设置的修改 315
28.2.8 远程调试需要的断点 316
28.2.9 源程序重编译 316
28.3 远程调试故障排查 316
28.4 在一个没有安装JBuilder的系统上建立调试服务程序 316
第29章 开发servlet 319
29.1 关于Java servlet 320
29.1.1 Java servlet综述 320
29.1.2 servlet生命周期 320
29.1.3 servlet映射技术 322
29.1.5 HTTP会话 323
29.1.4 servlet上下文 323
29.2 对servlet的介绍 324
29.2.1 servlet示例应用 324
29.2.2 servlet结构综述 324
29.2.3 servlet生命周期 325
29.3 编写servlet 326
29.3.1 与客户的交互 326
29.3.2 生命周期方法 327
29.4 综述:用servlet向导创建servlet 328
29.5 教程:用servlet向导创建servlet 333
29.5.1 测试servlet 335
29.5.2 配置servlet 335
29.5.3 理解servlet 336
29.6 国际化servlet 336
29.8 调试servlet 337
29.7 其他示例servlet 337
29.9 说明 339
第三部分 创建JavaBean 341
第30章 JavaBean组件 341
30.1 什么是组件 341
30.1.1 从组件用户看组件 341
30.1.2 从组件编写者看组件 341
30.1.3 从JavaBean看组件 342
30.2 JavaBean组件模型的需求 342
30.3 组件的部件 344
30.3.1 组件属性 344
30.3.2 组件方法 345
30.3.3 组件事件 345
30.4 轻量组件 346
31.1 编写JavaBean的快车道 347
31.2 组件用户与组件编写者 347
第31章 创建JavaBean概述 347
31.3 创建组件的方法 348
31.3.1 修改现有的组件 348
31.3.2 创建非UI组件 348
31.3.3 创建组合组件 349
31.3.4 创建原始组件 350
31.3.5 使用BeansExpress 350
31.4 安装组件 350
31.4.1 指定组件图像 350
31.4.2 指定组件选项板页 351
第32章 用BeansExpress创建JavaBean 352
32.1 什么是JavaBean 352
32.2 为什么构建JavaBean 352
32.3 生成bean类 352
32.5 添加属性到bean 354
32.4 设计bean的用户界面 354
32.5.1 修改属性 356
32.5.2 删除属性 356
32.5.3 添加绑定和约束属性 357
32.6 创建BeanInfo类 357
32.6.1 为属性指定BeanInfo数据 358
32.6.2 使用BeanInfo Designer 358
32.6.3 修改BeanInfo类 359
32.7 添加事件到bean中 359
32.7.1 激发事件 359
32.7.2 监听事件 362
32.7.3 创建定制的事件集 363
32.8 创建属性编辑器 364
32.8.1 创建字符串列表编辑器 365
32.8.2 创建字符串标签列表编辑器 366
32.8.4 创建定制的组件属性编辑器 367
32.8.3 创建整数标签列表编辑器 367
32.9 添加对串行化的支持 368
32.10 检查JavaBean的有效性 368
32.11 发布bean 369
32.12 创建企业级JavaBean 369
第33章 创建属性 374
33.1 创建属性的快车道 374
33.2 定义组件属性 374
33.3 定义简单的属性 375
33.3.1 编写存取器方法 375
33.3.2 声明属性域 376
33.3.3 为属性域设置存取级别 376
33.4.1 定义布尔属性 377
33.4.2 定义数组属性 377
33.4 定义特殊的属性类型 377
33.3.4 设置缺省属性值 377
33.4.3 定义索引属性 378
33.4.4 定义结合属性 379
33.4.5 定义约束属性 380
33.5 编写属性编辑器 382
33.5.1 实现PropertyEditor接口 382
33.5.2 获得Java初始化字符串 382
33.5.3 选择显示格式 383
33.5.4 提供定制的编辑器 384
33.5.5 通知监听者属性值的变化 384
33.5.6 属性编辑器例子 385
33.5.7 为属性指定属性编辑器 387
33.6.1 实现Customizer接口 388
33.6.2 指定定制的组件 388
33.6 创建组件定制器 388
33.6.3 通知监听者组件的变化 389
33.6.4 保存定制器变化 389
33.6.5 修改BeanInfo类 389
第34章 使用事件 391
34.1 事件的快车道 391
34.1.1 选择现有事件集的快车道 391
34.1.2 创建新事件集的快车道 391
34.1.3 把一个组件转变为一个事件源的快车道 391
34.1.4 使组件成为监听者的快车道 392
34.2 组件和事件 392
34.2.1 事件怎样从事件源流到事件监听者 392
34.2.2 JBuilder为什么使用行动适配器 393
34.2.3 组件用户怎样查看事件 393
34.3 事件集合 395
34.2.4 组件编写者怎样查看事件 395
34.4 使用现有的事件集 397
34.5 创建定制的事件集 397
34.5.1 定义新的事件对象 398
34.5.2 定义新的事件监听接口 399
34.5.3 通知监听组件 400
34.5.4 向源组件注册监听者 401
34.5.5 停止组件监听事件 402
34.5.6 发送事件到监听者 403
34.5.7 理解事件适配器类 404
34.5.8 监听事件的发生 405
第35章 用BeanInfo类指定组件信息 407
35.1 把存在的类转变为JavaBean 407
35.1.1 指定完整组件信息 407
35.1.2 指定部分组件信息 409
35.2 使用BasicBeanInfo类 410
35.3 隐藏属性和事件 412
35.4 为属性指定定制的编辑器 412
35.5 指定缺省事件 414
35.6 用BeansExpress生成BeanInfo类 414
第36章 串行化JavaBean 415
36.1 在UI Designer中串行化bean 415
36.2 实例化可串行化的JavaBean 416
36.3 用代码串行化对象 417
36.4 解串行化对象 418
36.5 定制串行化 418
36.5.1 实现Serializable接口 419
36.5.2 阻止特定的域被串行化 419
36.5.3 添加writeObject()和readObject()方法 419
36.7 版本控制 421
36.6 用可具体化接口串行化 421
第37章 使一个对话框成为JavaBean 422
37.1 创建对话框 422
37.2 包装对话框类 422
37.2.1 创建包装器类 423
37.2.2 在构造器中实例化对话框类 423
37.2.3 添加框架属性 423
37.2.4 获取用户输入 424
37.2.5 显示对话框 425
37.2.6 产生操作事件 426
37.2.7 对窗口事件作出反应 427
37.2.8 关闭对话框 428
37.2.9 使用对话框 428
附录 429
附录A 用JBuilder进行国际化 429
附录B 使用命令工具 441