日期:2014-05-19  浏览次数:20786 次

JDBC的连接问题,恳请高手直接,初学者有些不懂。感谢!
在Myeclipse连接Oracle中,我的JDBC驱动(Oracle自带的classes12.jar)添加上了。可是··
public class BatchJDBC {
public final static String DBDRIVER = "oracle.jdbc.driver.OracleDriver";
public final static String DBURL = "jdbc:oracle:thin:@localhost:1521:TANKUNOR";
public final static String DBUSER = "scott";
public final static String DBPASSWORD = "tiger";
  public static void main(String args[]) throws Exception {
Connection conn = null;// 数据库的连接对象
Class.forName(DBDRIVER);// 使用class类加载驱动程序
conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);

中对数据库增删改查是成功的。
可是我在Servlet(如下)中连接却说java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

public class AddMessageServlet extends HttpServlet {
public final static String DBDRIVER = "oracle.jdbc.driver.OracleDriver";
public final static String DBURL = "jdbc:oracle:thin:@localhost:1521:TANKUNOR";
public final static String DBUSER = "scott";// 数据库用户名
public final static String DBPASSWORD = "tiger";// 密码
  public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset=utf-8");
  Class.forName(DBDRIVER);
conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
却是失败的,这是为什么呢,同样的连接,只是一个是纯java一个是Servlet。希望高手指教,初学者很混沌···感谢!

------解决方案--------------------
把驱动包放到lib目录下,然后重新编译、部署项目
------解决方案--------------------
类找不到就是找不到么!自己好好看一看,那包下到底有没有这个类,如果没有的话,放一个适当的驱动就ok了
------解决方案--------------------
你在servlet下是如何操作的
------解决方案--------------------
你单独做一个驱动类,然后在servlet中引用这个类,试试
------解决方案--------------------
我不知道你第一个是不是用tomcat启动的,如果不是,则你的问题就出在tomcat lib中缺少驱动包
------解决方案--------------------
没有jdbc的驱动
------解决方案--------------------
这样连接的话肯定是没有驱动啊 你没有用连接池的 tomcat中是不需要jar包得啊 要不是就jar有问题 可以用oracle中的 后缀是14的jar包啊
------解决方案--------------------
理由很简单!
因为main 方法执行的时候, Class.forName(DBDRIVER); 驱动被加载了,所以OK

但是在servlet中。这个要说下servlet的生命周期了。你看一下web.xml 中是否配置了该servlet。然后找到<servlet>
<servlet-name>ServletConfigurator</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>xmlFile</param-name>
<param-value>WEB-INF/proxool.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

当web容器启动的时候,servlet才会init。生命周期才开始!

你的web项目,配置了tomcat或是其他服务器了嘛,服务启动了嘛?如果没有当然调不掉!因为你的servlet生命周期还没有开始