Chinaunix首页 | 论坛 | 博客
  • 博客访问: 105292660
  • 博文数量: 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博客
  • 博客访问: 105292661
  • 博文数量: 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博客
  • 博客访问: 105292662
  • 博文数量: 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博客
  • 博客访问: 105292663
  • 博文数量: 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博客
  • 博客访问: 105292664
  • 博文数量: 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博客
  • 博客访问: 105292665
  • 博文数量: 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博客
  • 博客访问: 105292666
  • 博文数量: 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博客
  • 博客访问: 105292667
  • 博文数量: 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博客
  • 博客访问: 105292668
  • 博文数量: 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博客
  • 博客访问: 105292669
  • 博文数量: 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博客
  • 博客访问: 105292670
  • 博文数量: 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博客
  • 博客访问: 105292671
  • 博文数量: 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博客
  • 博客访问: 105292672
  • 博文数量: 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博客
  • 博客访问: 105292673
  • 博文数量: 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博客
  • 博客访问: 105292664
  • 博文数量: 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博客
  • 博客访问: 105292675
  • 博文数量: 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博客
  • 博客访问: 105292676
  • 博文数量: 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博客
  • 博客访问: 105292677
  • 博文数量: 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博客
  • 博客访问: 105292678
  • 博文数量: 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博客
  • 博客访问: 105292679
  • 博文数量: 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博客
  • 博客访问: 105292680
  • 博文数量: 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博客
  • 博客访问: 105292681
  • 博文数量: 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博客
  • 博客访问: 105292682
  • 博文数量: 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博客
  • 博客访问: 105292683
  • 博文数量: 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博客
  • 博客访问: 105292684
  • 博文数量: 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博客
  • 博客访问: 105292685
  • 博文数量: 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博客
  • 博客访问: 105292686
  • 博文数量: 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博客
  • 博客访问: 105292687
  • 博文数量: 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博客
  • 博客访问: 105292688
  • 博文数量: 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博客
  • 博客访问: 105292679
  • 博文数量: 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博客
  • 博客访问: 105292690
  • 博文数量: 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博客
  • 博客访问: 105292691
  • 博文数量: 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博客
  • 博客访问: 105292692
  • 博文数量: 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博客
  • 博客访问: 105292693
  • 博文数量: 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博客
  • 博客访问: 105292694
  • 博文数量: 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博客
  • 博客访问: 105292695
  • 博文数量: 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博客
  • 博客访问: 105292696
  • 博文数量: 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博客
  • 博客访问: 105292697
  • 博文数量: 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博客
  • 博客访问: 105292698
  • 博文数量: 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博客
  • 博客访问: 105292699
  • 博文数量: 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博客
  • 博客访问: 105292700
  • 博文数量: 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博客
  • 博客访问: 105292701
  • 博文数量: 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博客
  • 博客访问: 105292702
  • 博文数量: 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博客
  • 博客访问: 105292703
  • 博文数量: 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博客
  • 博客访问: 105292694
  • 博文数量: 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博客
  • 博客访问: 105292705
  • 博文数量: 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博客
  • 博客访问: 105292706
  • 博文数量: 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博客
  • 博客访问: 105292707
  • 博文数量: 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博客
  • 博客访问: 105292708
  • 博文数量: 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博客
  • 博客访问: 105292709
  • 博文数量: 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博客
  • 博客访问: 105292710
  • 博文数量: 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博客
  • 博客访问: 105292711
  • 博文数量: 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());
阅读(322549) | 评论(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());
阅读(322548) | 评论(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());
阅读(322547) | 评论(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());
阅读(322546) | 评论(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());
阅读(322545) | 评论(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());
阅读(322544) | 评论(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());
阅读(322543) | 评论(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());
阅读(322542) | 评论(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());
阅读(322541) | 评论(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());
阅读(322540) | 评论(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());
阅读(322539) | 评论(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());
阅读(322538) | 评论(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());
阅读(322537) | 评论(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());
阅读(322536) | 评论(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());
阅读(322535) | 评论(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());
阅读(322534) | 评论(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());
阅读(322533) | 评论(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());
阅读(322532) | 评论(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());
阅读(322531) | 评论(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());
阅读(322530) | 评论(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());
阅读(322529) | 评论(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());
阅读(322528) | 评论(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());
阅读(322527) | 评论(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());
阅读(322526) | 评论(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());
阅读(322525) | 评论(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());
阅读(322524) | 评论(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());
阅读(322523) | 评论(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());
阅读(322522) | 评论(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());
阅读(322521) | 评论(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());
阅读(322520) | 评论(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());
阅读(322519) | 评论(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());
阅读(322518) | 评论(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());
阅读(322517) | 评论(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());
阅读(322516) | 评论(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());
阅读(322515) | 评论(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());
阅读(322514) | 评论(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());
阅读(322513) | 评论(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());
阅读(322512) | 评论(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());
阅读(322511) | 评论(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());
阅读(322510) | 评论(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());
阅读(322509) | 评论(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());
阅读(322508) | 评论(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());
阅读(322507) | 评论(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());
阅读(322506) | 评论(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());
阅读(322505) | 评论(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());
阅读(322504) | 评论(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());
阅读(322503) | 评论(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());
阅读(322502) | 评论(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());
阅读(322501) | 评论(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());
阅读(322500) | 评论(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());
阅读(322499) | 评论(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());
阅读(322498) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~