各位大哥:
我现在在调试我的程序是tomcat报了这样的错误:
javax.servlet.ServletException: Not able to obtain connection
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause org.hibernate.HibernateException: Not able to obtain connection
org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:113)
org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:88)
org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1162)
org.hibernate.loader.Loader.doQuery(Loader.java:390)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
org.hibernate.loader.Loader.doList(Loader.java:1593)
org.hibernate.loader.Loader.list(Loader.java:1577)
org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:395)
org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)
org.hibernate.impl.SessionImpl.list(SessionImpl.java:844)
org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
com.genuitec.hibernate.OperationB.lookup(OperationB.java:65)
com.yourcompany.struts.action.RegistAction.execute(RegistAction.java:48)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)我在项目的lib目录和项目对应的tomcat的lib目录下都有sqlserver的驱动!在eclipse左边的资源包中的J2EE1.4 Library Container目录结构下也可以看见sqlserver的三个驱动jar请各位帮帮我!!!着急啊!!这些到底是为什么呢?

解决方案 »

  1.   

    应该是你的数据源配置不对,检查hibernate.cfg.xml
    有两种配置方法:
    1。使用tomcat的连接池,需要先在tomcat中配置好(假设为jdbc/northwind),再引用
      <property name="connection.datasource">java:comp/env/jdbc/northwind</property>
      <property name="dialect">net.sf.hibernate.dialect.SQLServerDialect</property>2。直接配置
      <property name="connection.driver_class">
           com.microsoft.jdbc.sqlserver.SQLServerDriver
      </property>
      
      <property name="connection.url">
      jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=northwind
      </property>
      
      <property name="connection.username">sa</property>
      <property name="connection.password">password</property>  <property name="dialect">net.sf.hibernate.dialect.SQLServerDialect</property>另外,对SQL Server 2000,需要打sp3以上的补丁
      

  2.   

    兄弟,我是打了sp4补丁的!我都看过几遍hibernate.cfg.xml了,应该是没有问题的!
    我的hibernate.cfg.xml原文件如下:
    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
              "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
              "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools.                   -->
    <hibernate-configuration><session-factory>
    <property name="myeclipse.connection.profile">myTry_sql</property>
    <property name="connection.url">jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=myDatabase</property>
    <property name="connection.username">sa</property>
    <property name="connection.password">123</property>
    <property name="connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property>
    <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
    <mapping resource="com/genuitec/hibernate/Binformation.hbm.xml" /></session-factory></hibernate-configuration>
    各位兄弟帮我一下吗?谢谢了!
      

  3.   

    如果你确认连接没有问题,检查一下代码
    是否session被close?
      

  4.   

    各位兄弟我现在把错误信息在控制台下用e.printStackTrace();输出来了,不是数据库连接的问题!我想请问一下各位:
         在hibernate中是不是仅仅在Binformation.hbm.xml中像
          <id name="personId" column="personId"  type="java.lang.Long">
              <generator class="native"/>
             </id>
        这样配置,就可以让数据库自动的生成主键啊?如果不可以,那么我有怎样才可以让主键自动生成呢?
    但是我现在所报的错误中有这样一句:
    Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]无法将 NULL 值插入列 'personId',表 'myDatabase.dbo.BInformation';该列不允许空值。INSERT 失败。
     各位兄弟请指教指教吧
      

  5.   

    如果数据库中指定为自增长,使用<generator class="identity"/>就行了
      

  6.   

    兄弟,我怎么才可以在数据库中指定主键为自动增长啊!我不会啊!
    教教我好吗?我用的是sqlserver2000(已经升级到sp4)
    小弟先谢谢了!