//我现在想做一个spring+hibernate的试验,applicationContext.xml是自动生成的,我现在运行如下代码,总报数据库连接错误!我直接用连接字符串连接也正常,单独使用hibernate来用Session来操作对象也正常,可就是使用spring生成的dao就出错!郁闷啊......
出错信息如下:
JDBC exception on Hibernate data access; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection
Caused by: org.hibernate.exception.GenericJDBCException: Cannot open connection
......
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class 'com.microsoft.sqlserver.jdbc.SQLServerDriver' for connect URL '
jdbc:sqlserver://localhost:1433;databaseName=TESTApublic static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");  
UserdataDAO udd=(UserdataDAO)ac.getBean("UserdataDAO");
Userdata user=new Userdata();
user.setUsername("ff");
user.setUserpassword("fff");
udd.save(user);
}--applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
</property>
<property name="url">
<value>
jdbc:sqlserver://localhost:1433;databaseName=TESTA
</value>
</property>
<property name="username">
<value>sa</value>
</property>
<property name="password">
<value>XXXXXX</value>
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>

<property name="mappingResources">
<list>
   <value>com/cdrs/hibernate/Userdata.hbm.xml</value>
</list>
</property>

<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
</props>
</property>
</bean>
<bean id="UserdataDAO" class="com.cdrs.hibernate.UserdataDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean></beans>

解决方案 »

  1.   

    数据库为sqlserver2005,连接字符串直接连接数据库读取、查询均没问题,
      

  2.   

    sessionFactory用Spring去创建实例,Hibernate生成的XML基本等于没用。你去控制一下Spring生成的XML
      

  3.   

    <property name="password">
                <value>XXXXXX</value>
            </property>
      

  4.   

    先导入spring 
    再导入hibernate 导入hibernate时都用spring的
    别用hibernate自己的
      

  5.   

    org.apache.commons.dbcp.BasicDataSourcedbcp连接池的 jar 包有加入吗?
      

  6.   

    应该是你的mysql的数据库驱动 jar包地方没放正确吧
    你把它放到jre/lib/ext/下
    然后重启应用看看
      

  7.   

      
    --终于解决了 ,这样写不对
    <property name="url">
                <value>
                    jdbc:sqlserver://localhost:1433;databaseName=TESTA
                </value>
            </property>
    --这样写才对
    <property name="url">
       <value>jdbc:sqlserver://localhost:1433;databaseName=TESTA</value>
            </property>
      

  8.   

    spring读取配置文件的确有一定的问题