Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103550978
  • 博文数量: 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博客
  • 博客访问: 103550969
  • 博文数量: 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博客
  • 博客访问: 103550980
  • 博文数量: 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博客
  • 博客访问: 103550981
  • 博文数量: 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博客
  • 博客访问: 103550982
  • 博文数量: 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博客
  • 博客访问: 103550983
  • 博文数量: 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博客
  • 博客访问: 103550984
  • 博文数量: 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博客
  • 博客访问: 103550985
  • 博文数量: 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博客
  • 博客访问: 103550986
  • 博文数量: 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博客
  • 博客访问: 103550987
  • 博文数量: 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博客
  • 博客访问: 103550988
  • 博文数量: 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博客
  • 博客访问: 103550989
  • 博文数量: 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博客
  • 博客访问: 103550990
  • 博文数量: 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博客
  • 博客访问: 103550991
  • 博文数量: 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博客
  • 博客访问: 103550992
  • 博文数量: 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博客
  • 博客访问: 103550993
  • 博文数量: 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博客
  • 博客访问: 103550984
  • 博文数量: 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博客
  • 博客访问: 103550995
  • 博文数量: 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博客
  • 博客访问: 103550996
  • 博文数量: 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博客
  • 博客访问: 103550997
  • 博文数量: 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博客
  • 博客访问: 103550998
  • 博文数量: 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博客
  • 博客访问: 103550999
  • 博文数量: 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博客
  • 博客访问: 103551000
  • 博文数量: 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博客
  • 博客访问: 103551001
  • 博文数量: 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博客
  • 博客访问: 103551002
  • 博文数量: 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博客
  • 博客访问: 103551003
  • 博文数量: 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博客
  • 博客访问: 103551004
  • 博文数量: 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博客
  • 博客访问: 103551005
  • 博文数量: 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博客
  • 博客访问: 103551006
  • 博文数量: 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博客
  • 博客访问: 103551007
  • 博文数量: 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博客
  • 博客访问: 103551008
  • 博文数量: 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博客
  • 博客访问: 103550999
  • 博文数量: 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博客
  • 博客访问: 103551010
  • 博文数量: 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博客
  • 博客访问: 103551011
  • 博文数量: 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博客
  • 博客访问: 103551013
  • 博文数量: 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博客
  • 博客访问: 103551014
  • 博文数量: 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博客
  • 博客访问: 103551015
  • 博文数量: 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博客
  • 博客访问: 103551016
  • 博文数量: 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博客
  • 博客访问: 103551017
  • 博文数量: 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博客
  • 博客访问: 103551018
  • 博文数量: 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博客
  • 博客访问: 103551019
  • 博文数量: 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博客
  • 博客访问: 103551020
  • 博文数量: 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博客
  • 博客访问: 103551021
  • 博文数量: 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博客
  • 博客访问: 103551022
  • 博文数量: 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博客
  • 博客访问: 103551023
  • 博文数量: 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博客
  • 博客访问: 103551025
  • 博文数量: 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博客
  • 博客访问: 103551026
  • 博文数量: 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博客
  • 博客访问: 103551027
  • 博文数量: 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博客
  • 博客访问: 103551028
  • 博文数量: 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博客
  • 博客访问: 103551029
  • 博文数量: 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博客
  • 博客访问: 103551030
  • 博文数量: 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博客
  • 博客访问: 103551031
  • 博文数量: 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());
阅读(322349) | 评论(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());
阅读(322348) | 评论(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());
阅读(322347) | 评论(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());
阅读(322346) | 评论(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());
阅读(322345) | 评论(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());
阅读(322344) | 评论(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());
阅读(322343) | 评论(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());
阅读(322342) | 评论(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());
阅读(322341) | 评论(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());
阅读(322340) | 评论(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());
阅读(322339) | 评论(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());
阅读(322338) | 评论(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());
阅读(322337) | 评论(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());
阅读(322336) | 评论(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());
阅读(322335) | 评论(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());
阅读(322334) | 评论(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());
阅读(322333) | 评论(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());
阅读(322332) | 评论(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());
阅读(322331) | 评论(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());
阅读(322330) | 评论(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());
阅读(322329) | 评论(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());
阅读(322328) | 评论(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());
阅读(322327) | 评论(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());
阅读(322326) | 评论(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());
阅读(322325) | 评论(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());
阅读(322324) | 评论(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());
阅读(322323) | 评论(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());
阅读(322322) | 评论(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());
阅读(322321) | 评论(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());
阅读(322320) | 评论(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());
阅读(322319) | 评论(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());
阅读(322318) | 评论(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());
阅读(322317) | 评论(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());
阅读(322316) | 评论(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());
阅读(322315) | 评论(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());
阅读(322314) | 评论(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());
阅读(322313) | 评论(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());
阅读(322312) | 评论(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());
阅读(322311) | 评论(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());
阅读(322310) | 评论(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());
阅读(322309) | 评论(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());
阅读(322308) | 评论(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());
阅读(322307) | 评论(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());
阅读(322306) | 评论(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());
阅读(322305) | 评论(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());
阅读(322304) | 评论(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());
阅读(322303) | 评论(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());
阅读(322302) | 评论(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());
阅读(322301) | 评论(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());
阅读(322300) | 评论(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());
阅读(322299) | 评论(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());
阅读(322298) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~