写了一个JDBC连接数据库的类。(参照“传智播客的JDBC视频”)代码段一:数据库链接注册、连接、关闭等方法import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;public final class DBUtiles { private String url = null;
private String user = null;
private String password = null;
private static DBUtiles instance = null; private DBUtiles() {
} static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
throw new ExceptionInInitializerError(e);
}
} public Connection getConnection() throws SQLException, IOException {
System.out.println("connection");
                //尝试从配置文件读取数据库连接参数
Properties prop = new Properties();
InputStream is = DBUtiles.class.getClassLoader().getResourceAsStream(
"dbconfig.properties");
prop.load(is);
url=prop.getProperty("url");
user=prop.getProperty("username");
password=prop.getProperty("password");
System.out.println(user);
return DriverManager.getConnection(url, user, password);
} public static DBUtiles getInstance() {
if (instance == null) {
synchronized (DBUtiles.class) {
if (instance == null) {
instance = new DBUtiles();
}
}
}
return instance;
} // 关闭连接
public void dispose(ResultSet rs, Statement st, Connection conn) {
try {
if (rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (st != null)
st.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (conn != null)
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
代码段二:具体的数据库实现import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class DBconnection {

public void Query(String sql,Object[]params) throws SQLException, IOException{
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
System.out.println("查看是否进入try块");//程序到这里就抛出异常信息
conn = DBUtiles.getInstance().getConnection();
ps = conn.prepareStatement(sql);
rs = ps.executeQuery(); while (rs.next()) {
System.out.println(rs.getInt(2) + "\t"
+ rs.getInt(3) + "\t" + rs.getInt(4)
+ "\t" + rs.getInt(5));
} } finally {
DBUtiles.getInstance().dispose(rs, ps, conn);
}
}
}
以下是系统运行后,MYeclipse控制台抛出的错误信息查看是否进入try块
2009-3-15 14:55:41 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet default threw exception
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
中间的错误信息省略,问题应该是我代码的问题,所以就不写了,太长了。
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError//找不到类
at net.cnyun.connection.DBconnection.Query(DBconnection.java:38)
at net.cnyun.action.LogincpAct.execute(LogincpAct.java:47)
... 114 more记得以前做过单例的例子,没有出现这种问题。没能查出原因,所以贴出来,希望大家帮我看看。是哪里出现的问题。谢谢