各种配置都弄好了,Hibernate 3的那些库都加上了,SqlServer的3个Jar也加了,msbase.jar,mssqlserver.jar,msutil.jar现在写了个简单的代码测试session创建
        org.hibernate.SessionFactory sessionFactory = new org.hibernate.cfg.
                Configuration().configure().buildSessionFactory();
        org.hibernate.Session session = sessionFactory.openSession();
        System.out.println("----------qry1----------");
        org.hibernate.Query qry = session.createQuery("from FriendBean");
        java.util.List list = qry.list();
        for (int i = 0; i < list.size(); i++) {
            FriendBean frdTest = (FriendBean) list.get(i);
            System.out.println(frdTest.getName());
        }
cfg配置文件是这么写的
<?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">
<hibernate-configuration>
  <session-factory>
    <!-- Database connection settings -->
    <property name="connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property>
    <property name="connection.url">jdbc:sqlserver://localhost\BWL:1433;DatabaseName=Friends</property>
    <property name="connection.username">sa</property>
    <property name="connection.password">biweilun</property>
    <!-- JDBC connection pool (use the built-in) -->
    <property name="connection.pool_size">5</property>
    <!-- SQL dialect -->
    <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
    <!-- Enable Hibernate's automatic session context management -->
    <property name="current_session_context_class">thread</property>
    <!-- Disable the second-level cache  -->
    <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
    <!-- Echo all executed SQL to stdout -->
    <property name="show_sql">true</property>
    <mapping resource="hibernatetask/Friend.hbm.xml"/>
  </session-factory>
</hibernate-configuration>运行就抛连接异常log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
----------qry1----------
Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Cannot open connection
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
        at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:420)
        at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
        at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:105)
        at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1561)
        at org.hibernate.loader.Loader.doQuery(Loader.java:661)
        at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
        at org.hibernate.loader.Loader.doList(Loader.java:2145)
        at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
        at org.hibernate.loader.Loader.list(Loader.java:2024)
        at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
        at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:308)
        at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153)
        at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1106)
        at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
        at hibernatetask.Main.main(Main.java:31)
Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
        at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
        at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
        at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
        at com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)
        at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
        at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
        at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
        at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:154)
        at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
        at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:417)
        ... 14 more
Java Result: 1
成功生成(总时间:13 秒)

解决方案 »

  1.   

    Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.1,通过url连接的时候指定的服务器名称或者服务器地址不正确,这一点你可以通过ping来验证。
    2,指定的服务器上的sql server的服务没有启动,你可以通过sql server的查询工具来验证这个问题。
    3,指定端口错误,sql server的默认端口是1433。
    4,sql server没有提供tcp/ip的服务,你可以通过sql server的管理工具来查看这个问题。
    5,如果你的系统是 windows XP 或者 Windows 2003,那么你的sql server一定要升级到sp3以上.你的url换成这个看看
    jdbc:sqlserver://localhost:1433;databaseName=Friends