Chinaunix首页 | 论坛 | 博客
  • 博客访问: 90788176
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788177
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788178
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788179
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788180
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788181
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788182
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788183
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788174
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788185
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788186
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788187
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788188
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788189
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788190
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788191
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788192
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788193
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788194
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788195
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788196
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788197
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788198
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788189
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788200
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788201
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788202
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788203
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788204
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788205
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788206
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788207
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788208
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788209
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788210
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788211
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788212
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788213
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788204
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788215
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788216
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788217
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788218
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788219
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788220
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788221
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788222
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788223
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788224
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788225
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788226
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks

DB2 9 应用开发(733 考试)认证指南,第 7 部分: Java 编程(6)-sdccf-ChinaUnix博客
  • 博客访问: 90788227
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 23:41:35

developerWorks



故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316163) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316162) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316161) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316160) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316159) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316158) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316157) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316156) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316155) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316154) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316153) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316152) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316151) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316150) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316149) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316148) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316147) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316146) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316145) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316144) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316143) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316142) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316141) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316140) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316139) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316138) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316137) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316136) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316135) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316134) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316133) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316132) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316131) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316130) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316129) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316128) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316127) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316126) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316125) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316124) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316123) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316122) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316121) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316120) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316119) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316118) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316117) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316116) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316115) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316114) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316113) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


故障排除

在本小节中,将学习如何使用 JDBC 应用程序可用的故障排除工具。我们将讨论以下主题:

  • 使用 SQLException 对象进行基本的错误处理和报告
  • 使用 JDBC 跟踪功能
  • 使用 JDBC 错误日志

为了在 Java 程序中进行正确的错误处理,应该将逻辑包围在 JDBC 应用程序中的 try/catch 块中。当 JDBC 方法中出现错误时,它们将抛出 SQLException 对象。因此,对于每个包含 JDBC 操作的 try 块,相应的 catch 块应该包含用来处理 SQLException 对象的逻辑。

下列示例展示了在 WHERE 子句中带有类型不兼容的操作数的 SELECT 语句:STAFF 表的 JOB 列为 VARCHAR 数据类型,而不是 INTEGER

try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
  while(sqlEx != null) {
    System.err.println("SQLException information");
    System.err.println("Error msg: " + sqlEx.getMessage());
    System.err.println("SQLSTATE: " + sqlEx.getSQLState());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    sqlEx=sqlEx.getNextException();
  }
}

catch 块包含一个 while 循环,这将有助于处理多个异常。在这个循环的末尾,调用了 SQLException.getNextException() 方法,如果有另一个异常要捕捉,该方法将返回异常;如果不存在更多的异常,该方法就将返回空值。

带有不兼容操作数的 SELECT 语句将生成下列异常:

SQLException information
Error msg: DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818, SQLERRMC: =
SQLSTATE: 42818
Error code: -401
SQLException information
Error msg: DB2 SQL error: SQLCODE: -727, SQLSTATE: 56098, SQLERRMC: 2;-401;42818;=
SQLSTATE: 56098
Error code: -727

根据您所使用的 JDBC 驱动程序,输出可能不一样。以上输出是由应用程序使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序生成的。

本教程中展示的所有完整示例代码都包含了处理 SQLException 对象的逻辑。





回页首


为了调试 JDBC 和 SQLJ 应用程序,可以使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能。收集跟踪数据的推荐方法是,通过编辑 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的配置属性文件,在应用程序之外激活跟踪功能。但是,也可以在应用程序中激活跟踪功能。可以通过在加载驱动程序时指定跟踪选项,从而在应用程序运行期间启用跟踪功能;也可以在应用程序的不同部分显式地调用跟踪方法,从而打开和关闭跟踪。

为了在应用程序之外使用 IBM DB2 通用 JDBC 和 SQLJ 驱动程序的跟踪功能,要在属性文件中添加下列代码行:

db2.jcc.traceDirectory=Trace
db2.jcc.traceFile=extTrace
db2.jcc.traceFileAppend=true

对于本教程,这些代码行添加在 tut-trace.properties 文件中,这个文件位于被测试的类文件所在的目录中。traceDirectory 属性表示,所有跟踪文件将写入 trace 子目录。这个目录必须存在,才能写入跟踪文件。通过在 java 命令中指定 tut-trace.properties 属性文件,跟踪功能可以收集关于 ConnDb 类的信息。

java -Ddb2.jcc.propertiesFile=tut-trace.properties ConnDb

为了在应用程序中启用跟踪,可以在建立数据库连接所用的 url 参数后面附加跟踪属性。例如:

String url = 
     "jdbc:db2:sample:traceFile=Trace/intTrace.txt;traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";

在这个示例中,跟踪信息写入 Trace 子目录中的 intTrace.txt 文件中。

为了在使用 DriverManager 的应用程序中打开和关闭跟踪,可以在建立数据库连接所用的 url 参数中指定 traceLevel,并在 DriverManager.setLogWriter 方法中指定文件名和路径。例如:

...
String url = 
     "jdbc:db2:sample:traceLevel=" +
     (com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS |
     com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS) + ";";
...
//turn on trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(printWriter, 
      com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL);
...
//database activity
...
//turn off trace
((com.ibm.db2.jcc.DB2Connection) con).setJccLogWriter(null);





回页首


IBM DB2 通用 JDBC 和 SQLJ 驱动程序包含一个 DB2SystemMonitor 接口,可以用它收集以下这些关于应用程序的信息:

  • 核心驱动程序时间(Core driver time):受监视的 API 所经历的时间的总和
  • 网络输入/输出时间(Network I/O time):网络输入/输出时间的总和。
  • 服务器时间(Server time):报告的所有 DB2 服务器经历的时间的总和。
  • 应用程序时间(Application time):应用程序、JDBC 驱动程序、网络输入/输出和 DB2 服务器经历的时间的总和。
这些时间信息都是以毫秒为单位的。

以下代码演示如何创建 DB2SystemMonitor 接口,并收集和获得关于应用程序的监视数据:

...
com.ibm.db2.jcc.DB2SystemMonitor systemMonitor =
     ((com.ibm.db2.jcc.DB2Connection)con).getDB2SystemMonitor();
systemMonitor.enable(true);
//reset all counters
systemMonitor.start(com.ibm.db2.jcc.DB2SystemMonitor.RESET_TIMES);
...
//database activity
...
systemMonitor.stop();
System.out.println("Server elapsed time = " + systemMonitor.getServerTimeMicros());
阅读(316112) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~