小弟写了一个程序,连接DB2数据库的时候报错:
java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getConnection(DriverManager.java:545)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at dao.DBConnection.DBConnection(DBConnection.java:27)
at com.yourcompany.struts.action.LoginTestAction.execute(LoginTestAction.java:43)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)数据库连接代码如下:
public class DBConnection{
public UserDAO DBConnection(){
try{
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance(); }catch(Exception e){
e.printStackTrace();
}
Connection coon=null;
Statement stmt=null;
ResultSet rs=null;
String url="jdbc:db2://localhost:50000/DB2_TEST";
String user="admin";
String psw="19861108";
String sql="select * from test";
PreparedStatement ptmt=null;
try{
coon=DriverManager.getConnection(url, user, psw);
stmt=coon.createStatement();
// stmt.executeUpdate(sql);
rs=stmt.executeQuery(sql);
UserDAO us=new UserDAO();
if(rs.next()){
us.setUserName(rs.getString(2));
us.setPassword(rs.getString(3));
}
return us;
}catch(Exception ex){
ex.printStackTrace();
} finally{
try{
rs.close();
stmt.close();
coon.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
return null;
}
}DB2数据库安装文件夹中的db2jcc.jar,db2jcc_license_cu.jar已经复制到Tomcat中,工程下也有,也已经将db2java,jar复制到工程/WEB-INF/lib下,在Myeclipse中可以看到已经自动加载,请教各位前辈,我的问题该怎么解决啊?
java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getConnection(DriverManager.java:545)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at dao.DBConnection.DBConnection(DBConnection.java:27)
at com.yourcompany.struts.action.LoginTestAction.execute(LoginTestAction.java:43)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)数据库连接代码如下:
public class DBConnection{
public UserDAO DBConnection(){
try{
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance(); }catch(Exception e){
e.printStackTrace();
}
Connection coon=null;
Statement stmt=null;
ResultSet rs=null;
String url="jdbc:db2://localhost:50000/DB2_TEST";
String user="admin";
String psw="19861108";
String sql="select * from test";
PreparedStatement ptmt=null;
try{
coon=DriverManager.getConnection(url, user, psw);
stmt=coon.createStatement();
// stmt.executeUpdate(sql);
rs=stmt.executeQuery(sql);
UserDAO us=new UserDAO();
if(rs.next()){
us.setUserName(rs.getString(2));
us.setPassword(rs.getString(3));
}
return us;
}catch(Exception ex){
ex.printStackTrace();
} finally{
try{
rs.close();
stmt.close();
coon.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
return null;
}
}DB2数据库安装文件夹中的db2jcc.jar,db2jcc_license_cu.jar已经复制到Tomcat中,工程下也有,也已经将db2java,jar复制到工程/WEB-INF/lib下,在Myeclipse中可以看到已经自动加载,请教各位前辈,我的问题该怎么解决啊?
楼主【tiger435】截止到2008-07-17 10:48:43的历史汇总数据(不包括此帖):
发帖的总数量:1 发帖的总分数:20 每贴平均分数:20
回帖的总数量:2 得分贴总数量:1 回帖的得分率:50%
结贴的总数量:1 结贴的总分数:20
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
Type 2:COM.ibm.db2.jdbc.app.DB2Driver,这类驱动程序部分用 JAVA 编程语言编写,部分用本机代码编写。这些驱动程序使用特定于所连接数据源的本机客户端库。同样,由于使用本机代码,所以其可移植性受到限制。
Type 3:COM.ibm.jdbc.net.DB2Driver这类驱动程序使用纯 JAVA 客户机,并使用独立于数据库的协议与中间件服务器通信,然后中间件服务器将客户机请求传给数据源。
Type 4:COM.ibm.jdbc.jcc.DB2Driver这类驱动程序是纯 JAVA,实现针对特定数据源的网络协议。客户机直接连接至数据源。 DB2 V8.0以下不支持TYPE2和TYPE3,不过现在低版本已经使用比较少了,常用的还是Type2(app连接)和Type4(jcc,通用JDBC连接)连接方式:一、如果你写的数据库驱动加载语句是Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance(); 这就是Type2连接,其驱动在db2java.zip中,名字:COM.ibm.db2.jdbc.app.DB2Driver,连接的URL为:jdbc:db2:数据库名称,不需要IP什么的;二、如果你写的数据库驱动加载语句是Class.forName("COM.ibm.jdbc.jcc.DB2Driver").newInstance();这是Type4连接,其驱动在db2jcc.jar中,名字:COM.ibm.jdbc.jcc.DB2Driver,同时,使用这种连接方式的时候必须加载许可证,db2jcc_license_cu.jar,而且如果环境变量的classpath中没有的需要加进去,连接URL为:jdbc:db2://IP地址:端口/数据库名称;Type3连接方式因为不支持分布式事务,而且象J2EE服务器等不少服务器并不支持,所以一般可以采用Type4代替