JDBC连接Derby错误

BrooksPHP 2008-12-14 11:19:26
1.系统基本信息
Java Version: 1.6.0_11
JRE Version: 6.0
OS name: Windows Server 2008
Eclipse Version: 3.4
Derby Version: 10.4.2

2.我正在研究JDK 6.0中RowSet及其子接口的使用方法,详见http://www.ibm.com/developerworks/cn/java/j-lo-java6rowset.
在用JDBC连接Derby时出现了问题:
我安装了Derby的Eclipse插件:derby_core_plugin_10.4.2和derby_ui_plugin_1.1.2,并在IJ控制台新建了个数据库testdb,然后我写代码访问数据库时却提示出错:(1)java.lang.ClassNotFoundException: jdbc:derby://localhost:1527/E:/Practice/JavaEE/JDK 1.6/derbydb/testdb;create=true
(2)Exception in thread "main" java.sql.SQLException: No suitable driver found for org.apache.derby.jdbc.ClientDriver

package jdk6.rowset.ibm;

public class DBCreator {

/**
* 数据库工具类,提供了连接数据库的基本信息
*/
public static final String DRIVER = "org.apache.derby.jdbc.ClientDriver";

public static final String DERBY_URL = "jdbc:derby://localhost:1527/E:/Practice/JavaEE/JDK 1.6/derbydb/testdb;create=true";

public static final String SQL_SELECT_CUSTOMERS = "SELECT * FROM customer";

public static final String SQL_SELECT_ORDERS = "SELECT * FROM orders";

public static void main(String[] args) {
// TODO Auto-generated method stub

}

}


[code=Java]package jdk6.rowset.ibm;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.sql.rowset.CachedRowSet;

import com.sun.rowset.CachedRowSetImpl;

public class CachedRowSetDemo {

/**
* @param args
*/

public static Connection conn = null;

public static Statement stmt = null;

public static void fillRowSetWithExecute(CachedRowSet cachedRS)
throws SQLException {
cachedRS.setUrl(DBCreator.DERBY_URL);
// 使用 execute() 填充 CachedRowSet 时,需要设置数据库连接参数和查询命令 command
cachedRS.setCommand(DBCreator.SQL_SELECT_CUSTOMERS);
// Apache Derby的默认数据库用户名和密码均为APP
cachedRS.execute();
}

public static void main(String[] args) throws SQLException,
ClassNotFoundException, InstantiationException,
IllegalAccessException {
// TODO Auto-generated method stub
try {
Class.forName(DBCreator.DERBY_URL).newInstance();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn = DriverManager.getConnection(DBCreator.DRIVER);
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
CachedRowSet cachedRS = new CachedRowSetImpl();

fillRowSetWithExecute(cachedRS);

stmt.close();
conn.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}code]

我的困惑主要是:当不使用derby的eclipse插件时,可以正常连接;现在用了插件,并在插件的控制台下写的sql语句,却不能连接,请朋友们帮忙参考一下,谢谢!
PS: derby.jar derbyclient.jar derbytools.jar derbyrun.jar derbynet.jar以及derby的eclipse插件均已经添加进了classpath,
Eclipse的工程中也添加了,StartNetworkServer也已经在控制台启动,系统环境变量也设置过了
...全文
322 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
BrooksPHP 2008-12-15
  • 打赏
  • 举报
回复
尝试了多次终于解决:是因为我的JDK是1.6的,而安装的Derby插件又恰好支持最新标准:JDBC 4.0,JDBC 4.0 支持不在程序代码中显式地加载驱动程序。所以代码中的这句可以省略了:
// Class.forName("org.apache.derby.jdbc.ClientDriver");
---------------------------------------------------------------------
这是Derby插件的基本信息:

是否支持RowId类型:ROWID_UNSUPPORTED

数据库:Apache Derby 10 4

驱动程序:Apache Derby Network Client JDBC Driver 10.4.2.0 - (689064)

支持的JDBC版本:4 0
-----------------------------------------------------------------------
原来之所以出现异常就是因为添加了这句:Class.forName("org.apache.derby.jdbc.ClientDriver");
造成了冲突,去掉以后一切正常了 -3- 具体的出错原因有待确认。
希望能给遇到类似问题的朋友一些帮助~~
BrooksPHP 2008-12-15
  • 打赏
  • 举报
回复
可以, 在插件的IJ控制台输入:
connect 'jdbc:derby://localhost:1527/E:/Practice/JavaEE/JDK 1.6/derbydb/testdb;create=true';
显示正常,输入:show tables;也能显示数据表的相关信息
dbking 0.6
==========

dbking是一款基于Java的数据库处理工具集,主要包括三项主要内容:
1、为各类数据库提供统一的操作接口,尽最大可能保障各类数据库之间的移植性
2、通过生成器创建BO类及DAO层代码
3、为各类数据库之间的数据导入导出提供高效率的工具
下面对这三项功能进行详细的介绍。

1、为各类数据库提供统一的操作接口,尽最大可能保障各类数据库之间的移植性
  这类工具已经很多了,比如大家耳熟能详的Hibernate、iBatis,包括Apache的DBUtils、Spring的JdbcTemplate。为什么我们还要推出db-unifier这样一个功能类似的东西呢?
  这些工具的主要目的都是对JDBC进行包装,使开发人员能更容易的进行数据库开发,在代码的可读性、性能问题、移植问题上,这些工具都尽量做了权衡,达到了他们认为的完美。
  dbking是鉴于我们的开发经验和考虑,权衡出来的数据库工具,其主要考虑的方向有以下几点:
  1、简洁。所有的核心接口都在一个类里边,这个类是DbKing,代码不过1000行,却提供了大量的高质量功能方法,使用方法更是一目了然的简单。DbKing核心只依赖于JDBC驱动类,十分的轻量级,易于使用。
  2、避免数据库连接泄漏的问题。数据库建立连接、关闭连接默认情况下都由db-unifier处理。有人会觉得这样影响效率,当然我们也提供自己手动控制连接的方法,只是默认情况下采用自动的方式。
  3、统一的数据库操作类型。在dbking中,所有的数据库数据只有五种数据类型,String、Number(BigDecimal)、Timestamp、Clob(String)、Blob(byte[]),经过反复测试后,我们会例出各种数据库数据类型到这五种类型的映射表,当然我们也有少数的数据类型不能支持,有些是JDBC驱动的问题,有些是我们出于移植的考虑,有些数据库的数据类型在别的数据库里没有对应的数据类型支持,这样的数据类型只能不予支持,幸好这只是极少的一部分。
  4、简化了很多复杂的数据库操作。比如:数据库分页,你不用再关心记录总数怎么取,不用考虑各种数据库之间的差异,最关键的是绝对的高效。再比如LOB字段的处理,可以直接通过增、删、改、查等接口处理,遇到较大的LOB,也可以用流的方式处理,避免内存溢出的问题。再比如获取数据库序列,我们采用了统一的算法,不同的数据库都使用同一个接口来获取序列,而且这个方法可以在多线程环境下使用,甚至是集群环境下都没有问题。
  5、提供多种使用方式。可以单独使用,也可以结合Spring IoC框架使用。可以通过配置方式指定数据源,也可以通过硬代码方式指定数据源,甚至通过第三方获取数据库连接的方式都是可以的。 目前工具在Oracle 11g、Microsoft SQLServer 2012、MySQL 5.x、DB2 10.x、Sybase 15.x、PostgreSQL 9.x、Derby 10.x上通过了测试。

2、通过生成器创建BO类及DAO层代码
  这是一个配合dbking的代码生成器,生成基于dbking的DAO层类。有了这样类,可以简化开发代码,避免低级的书写错误,使开发者更专注于业务。另外,也可以在此基础上配合一定的代码来防止SQL注入的问题。

3、为各类数据库之间的数据导入导出提供高效率的工具
  异构数据库的导入导出一直是个大难题,一般的工具配置复杂,尤其是不支持LOB这样的大字段数据,我们的这个工具不仅配置简单,而且具有以下几个特点。
  1、速度非常快,这个因为取决于系统环境,这个只有谁用谁知道了,至少我们是跟别的工具作过比较的。
  2、支持LOB字段的导入导出。
  3、自动侦测数据库表的主、从关系,保障数据库的导入不受外键约束的影响。
  4、根据配置可以选择遇到重复数据时的处理方式————忽略或者中止。
第一章 安装配置开发环境 18 1.1系统需求 18 1.2 JDK 的下载,安装和配置(可选) 18 1.2.1下载JDK 18 1.2.2 安装JDK 23 1.2.3 配置环境变量(可选) 24 1.2.4 JDK 6 中文文档下载地址(ZIP,HTML,CHM)(可选) 26 1.3 Tomcat服务器的下载,安装和运行(可选) 26 1.4 JBoss 服务器的下载,安装和运行(可选) 28 1.5 MySQL 5数据库服务器下载,安装和运行(可选) 31 1.5.1 MySQL 5 官方版本的下载和安装,运行 32 1.5.2 MySQL 5绿色版的下载安装和运行 32 1.5.2.1 下载 32 1.5.2.2 用法图解 33 1.6 Eclipse 3.3的下载,安装和运行 35 1.7 MyEclipse 6的下载,安装和运行 37 1.7.1下载 37 1.7.2 安装 38 1.7.2.1 ALL in ONE 版本的安装 38 1.7.2.2 插件(PLUG-IN) 版本的安装 39 1.7.2.3 使用ALL In ONE 版本制作MyEclipse绿色版 40 1.7.3 运行 41 1.8 Eclipse运行出错的疑难解答 41 1.9 使用高级进程管理器来管理Java进程 44 1.10小结 45 第二章 开发第一个Java应用程序 46 2.1 介绍 46 2.2 手工编写,编译并运行Java程序 46 2.3 使用Eclipse/MyEclipse来编写,编译并运行Java程序 47 2.4小结 50 第三章 Eclipse 的基础概念,配置和使用 51 3.1界面布局 51 3.1.1菜单 51 3.1.2 工具栏 51 3.1.3 透视图(Perspective)切换器 52 3.1.4 视图(View) 53 3.1.5 上下文菜单(Context Menu) 55 3.1.6 状态栏(Status Bar) 55 3.1.7 编辑器(Editor) 55 3.2 常见概念和操作 56 3.2.1 项目(Project) 56 3.2.2工作区(Workspace) 56 3.2.3 导入、导出Java项目 56 3.2.3.1 导入项目 56 3.2.3.2 导出项目 57 3.2.4快速修正代码错误 57 3.2.5优化导入列表 58 3.2.6添加,修改,删除JRE 58 3.2.7查看类定义,层次和源码 58 3.2.8查找类文件(Open Type) 59 3.2.9源码目录,输出路径,Library和编译器版本设置 59 3.2.10生成getter和setter 方法 60 3.2.11格式化源代码 61 3.2.12注释和取消注释 61 3.2.13手工和自动编译 61 3.2.14直接粘贴Java源码为类文件 61 3.2.15复制项目中的文件 61 3.2.16断点和调试器 62 3.2.17快速加入、删除jar包到Build Path 63 3.2.18查看当前类被哪些类引用 63 3.2.19设置编辑器字体,颜色和显示行号 63 3.2.20 Link文件 64 3.2.21安装插件 65 3.2.22获取帮助和阅读帮助文档 65 3.2.23 CVS团队源代码管理(在线阅读) 66 3.2.24 修改文件的字符编码 66 3.3小结 66 第四章 用MyEclipse Database Explorer管理数据库 67 4.1功能一览 67 4.2使用MyEclipse Database Explorer透视图 69 4.2.1介绍 69 4.2.2连接到MyEcipse Derby数据库 70 4.2.3切换到MyEclipse Database Explorer透视图 70 4.2.4打开数据库连接 71 4.2.5关闭数据库连接 72 4.2.6浏览数据库结构 72 4.2.7编辑和执行SQL代码段 73 4.2.8生成实体关系(ER)图 75 4.2.9编辑表格数据 76 4.2.10清空表格数据 77 4.2.11创建和删除表格 77 4.2.12创建和删除外键 78 4.2.13创建和删除索引 79 4.2.14生成SQL语句 80 4.2.15建立到MySQL数据库的连接 81 4.3小结 82 4.4参考资料 82 第五章 开发JDBC应用 83 5.1系统需求 83 5.2创建数据库表格 83 5.3创建Java项目 84 5.4添加JDBC驱动到Build Path 85 5.5编写JDBC访问类 85 5.6小结 89 5.7参考资料 89 5.7.1 网页 89 5.7.2 JDBC 要点 89 第六章 管理应用服务器 95 6.1简介 95 6.2 Servers 视图 95 6.3浏览应用服务器连接器 96 6.4配置连接器 97 6.4.1第1步 配置服务器的安装信息 98 6.4.2第2步 启用连接器 98 6.4.3第3步 选择启动服务器时候所用的JDK 98 6.4.3.1可选操作:添加 JVM 99 6.5发布并运行Java EE项目 100 6.5.1 Java EE 项目的发布类型 100 6.5.1.1 散包发布 100 6.5.1.2 打包发布 100 6.5.2向服务器发布应用 100 6.5.2.1打开发布对话框 100 6.5.2.2点击Add按钮启动新建发布对话框并完成发布 102 6.6应用服务器的管理和调试 103 6.6.1启动服务器 103 6.6.2监控服务器启动过程 103 6.6.3停止服务器 103 6.6.4调试发布的企业应用 104 6.7小结 104 6.8 参考资料 104 第七章 开发Hibernate应用 105 7.1介绍 105 7.2 Hibernate 一览 105 7.2.1简介 105 7.2.2 Hibernate要点 106 7.3准备工作 112 7.4创建 HibernateDemo 项目 112 7.4.1创建表格 112 7.4.2创建 HibernateDemo Java Project 113 7.4.3添加 Hibernate Capabilities 到现有项目 114 7.4.4 使用Hibernate配置文件编辑器修改文件 118 7.4.5 使用反向工程快速生成Java POJO类,映射文件和DAO 120 7.4.6 调整生成的hbm文件 132 7.4.7 编写测试代码 133 7.5 MyEclipse Hibernate工具的高级部分 135 7.5.1 反向工程向导的完整说明 135 7.5.2 使用HQL编辑器 138 7.6 小结 140 7.7参考资料 141 第八章 开发Web应用 142 8.1介绍 142 8.2 Web项目和术语 142 8.2.1 Java EE 中的Web项目结构 142 8.2.2 MyEclipse Web 项目介绍 144 8.3 创建Web项目 144 8.4 创建HTML页面 146 8.5 创建JSP页面 148 8.6 创建Servlet 150 8.7 创建Filter(过滤器) 152 8.8 创建数据库访问层(DAO) 155 8.9 修改Servlet调用后台类 158 8.10 发布,重新发布,运行和测试应用 159 8.11 调试JSP应用 160 8.12 向现有Web项目添加Web开发功能 161 8.13高级设置 161 8.13.1修改Web项目的默认设置 161 8.13.2给Web项目加入高级功能 162 8.14 常见问题 163 8.15 小结 163 8.16 参考资料 164 相关网页 164 Tomcat JSP Web 开发中的乱码问题小结 164 第九章 开发Struts 1.x应用 166 9.1 介绍 166 9.2 创建Struts项目 168 9.2.1 创建Web项目 169 9.2.2 加入 Struts开发功能 169 9.3 使用Struts工具 171 9.3.1 Struts配置文件编辑器 171 9.3.2 Struts组件向导 173 9.4编写登录应用 175 9.4.1 应用的流程和目标 175 9.4.2 创建登录成功页面 175 9.4.3 使用新建Form,Action和JSP的向导创建关键组件 176 9.4.4 调整生成的代码 180 9.4.5 发布,运行并测试 183 9.4.6 练习题:如何用JDBC实现登录? 184 9.5 编写Struts整合Hibernate的分页应用 184 9.5.1 分页应用的设计思路 184 9.5.2 创建StrutsPageDemo项目,加入Hibernate开发功能 190 9.5.3 反向工程生成DAO层 190 9.5.4 编写分页应用层 191 9.5.5 加入Struts表现层和控制层 192 9.5.6发布,运行并测试 196 9.5.7 练习:如何用Hibernate+Struts实现修改用户信息功能? 196 9.6 小结 197 9.7 参考资料 197 第十章 开发Spring应用 198 10.1 简介 198 10.1.1 Spring简介 198 10.1.2 MyEclipse的Spring开发功能简介 200 10.2 开发简单的Spring应用 200 10.2.1 给项目加入Spring功能 200 10.2.2 创建Bean类和配置信息 202 10.2.3 Spring Beans 视图和Outline视图 206 10.2.4 运行和测试 208 10.2.5 如何加载多个Spring配置文件 210 10.3 开发Spring 1.2 AOP应用 211 10.3.1 开发Man对象 211 10.3.2 开发前置通知(Before advice)对象:FBI 212 10.3.3 装配拦截器和Bean 212 10.3.4 测试和运行 214 10.3.5 AOP简介和相关概念 214 10.3.6 关于java.lang.ClassCastException: $Proxy0错误的解决方法 216 10.4 开发 Spring 2.0 AOP 应用 219 10.4.1 使用aop 标签实现AOP 219 10.4.2 使用标注(@AspectJ)实现AOP 221 10.4.3 开发环绕通知(Around Advice)AOP 应用 223 10.5 Spring数据库开发 227 10.5.1 DataSource 和 JDBCTemplate开发 227 10.5.2 Hibernate 整合 Spring开发 236 10.5.2.1 创建项目,添加必要的开发功能 236 10.5.2.2 反向工程生成Spring整合Hibernate的DAO 238 10.5.2.3 用Spring 1.2 的事务代理类解决事务提交问题 245 10.5.2.4 用Spring 2.0 的aop和tx声明式配置解决事务提交问题 247 10.5.2.5 用Spring 2.0 的@Transactional标注解决事务提交问题(最佳方案) 251 10.5.2.6 使用 HibernateTemplate 实现分页查询 254 10.6 小结 255 10.7 参考资料 255 10.7.1 MyEclipse生成的Spring+Hibernate无法保存数据问题的解决方法 255 10.7.2 MyEclipse生成的Spring+Hibernate无法保存数据问题的解决方法2 - 用 CGLIB 来实现事务管理 258 10.7.3 Spring相关的参考资料 261

67,518

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧