Spring整和Hibernate经验
今天我在整和Spring和Hibernate时,系统老报一个错误信息
java 代码
- Exception in thread "main" org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: Cannot open connection; uncategorized SQLException for SQL [???]; SQL state [null]; error code [0]; Cannot create JDBC driver of class 'com.microsoft.jdbc.sqlserver.SQLServerDriver' for connect URL '
- jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=hiber;SelectMethod=cursor'; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class 'com.microsoft.jdbc.sqlserver.SQLServerDriver' for connect URL '
- jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=hiber;SelectMethod=cursor'
- org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class 'com.microsoft.jdbc.sqlserver.SQLServerDriver' for connect URL '
- jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=hiber;SelectMethod=cursor'
- at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:780)
- at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
- at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81)
- at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:298)
- at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:110)
- at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:88)
- at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1162)
- at org.hibernate.loader.Loader.doQuery(Loader.java:390)
- at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
- at org.hibernate.loader.Loader.doList(Loader.java:1593)
- at org.hibernate.loader.Loader.list(Loader.java:1577)
- at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:395)
- at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)
- at org.hibernate.impl.SessionImpl.list(SessionImpl.java:844)
- at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
- at org.springframework.orm.hibernate3.HibernateTemplate$31.doInHibernate(HibernateTemplate.java:853)
- at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:366)
- at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:844)
- at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:836)
- at hbn.DaoInImp.get(DaoInImp.java:12)
- at hbn.Test.main(Test.java:27)
- Caused by: java.sql.SQLException: No suitable driver
- at java.sql.DriverManager.getDriver(DriverManager.java:243)
- at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:773)
- ... 20 more
搞的我郁闷的很,反复检查测试,在不使用Spring时,数据库连接正常,一用Spring时就报找不到驱动,在网上不断翻阅资料都未果,最后无意间复制了一段代码,放上去就好了,经过和之前我写的代码比对,代码都没什么问题,就是差在一个回车上
改动前:
java 代码
- <bean id="dataSource"
- class="org.apache.commons.dbcp.BasicDataSource">
- <property name="driverClassName">
- <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
- </property>
- <property name="url">
- <value>
- jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=hiber;SelectMethod=cursor
- </value> //就是这里的换行惹的祸
- </property>
- <property name="username">
- <value>sa</value>
- </property>
- <property name="password">
- <value></value>
- </property>
- </bean>
改动后
java 代码
- <bean id="dataSource"
- class="org.apache.commons.dbcp.BasicDataSource">
- <property name="driverClassName">
- <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
- </property>
- <property name="url">
- <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=hiber;SelectMethod=cursor</value> //要写在一行千万不要换行
- </property>
- <property name="username">
- <value>sa</value>
- </property>
- <property name="password">
- <value></value>
- </property>
- </bean>
看到这里真的有让人无奈的感觉,XML里面我好象以前也遇到过这样的情况,不能进行分段读数据,哎,以后这样的问题一定要记住。
以上是我的一点点小经验,希望各位不要见笑,其实也没什么,就是在平时写程序的时候多注意下就不会出现这样的问题了。