数据库操作时报这个错是怎么回事?
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:185)
at com.ibatis.common.jdbc.SimpleDataSource.popConnection(SimpleDataSource.java:580)
at com.ibatis.common.jdbc.SimpleDataSource.getConnection(SimpleDataSource.java:222)
at com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransaction.init(JdbcTransaction.java:48)
at com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransaction.getConnection(JdbcTransaction.java:89)
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForObject(GeneralStatement.java:104)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:566)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:541)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSessionImpl.java:106)
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForObject(SqlMapClientImpl.java:83)
at com.zzr.main.Test.main(Test.java:39)
  public class Test { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
String resource ="com/zzr/resource/SqlMapConfig.xml";
Reader reader= null;
SqlMapClient sqlMap = null;
try{
reader = Resources.getResourceAsReader( resource );
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader); 

//sqlMap系统初始化完毕,开始执行update操作

// sqlMap.startTransaction();
// User user = new User();
// user.setId(new Integer(1));
// user.setName("Erica");
// user.setSex(new Integer(1));
// sqlMap.update("updateUser",user);
// sqlMap.commitTransaction();

sqlMap.startTransaction();
String name = new String("selina");
User user = (User)sqlMap.queryForObject("getUser", name);

sqlMap.commitTransaction();
}catch(Exception ex){
ex.printStackTrace();
}
finally{
try{
sqlMap.endTransaction();
}catch(SQLException ex){
ex.printStackTrace();
}
  
}
}
}//============User.xml =======<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="User">
<typeAlias alias="user" type="com.zzr.entiy.User"/>
<select id="getUser" parameterClass="java.lang.String" resultClass="user">
        <![CDATA[
       select name, sex from t_user where name = #name#
        ]]>
        </select>
        
<update id="updateUser" parameterClass="user">
<![CDATA[
UPDATE t_user SET name=#name#,usex=#sex# WHERE id = #id#
]]>
</update>

        <insert id="insertUser" parameterClass="user">
    INSERT INTO t_user (name,sex) VALUES (#name#,#sex#)
</insert>

<delete id="deleteUser" parameterClass="java.lang.String">
delete from t_user where id = #value#
</delete>
</sqlMap>
//=================  SqlMapConfig.xml ====================
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMapConfig
       PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
       "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig><settings
cacheModelsEnabled="true"
    enhancementEnabled="true"
lazyLoadingEnabled="true"
errorTracingEnabled="true"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="false"
/>
<transactionManager type="JDBC">

<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
<property name="JDBC.ConnectionURL" value="jdbc:microsoft:sqlserver://localhost/test/SelectMethod=Cursor"/>
<property name="JDBC.Username" value="sa"/>
<property name="JDBC.Password" value="123"/>
<property name="Pool.MaximumActiveConnections" value="10"/>
<property name="Pool.MaximumIdleConnections" value="5"/>
<property name="Pool.MaximumCheckoutTime" value="120000"/>
<property name="Pool.TimeToWait" value="500"/>
<property name="Pool.PingQuery" value="select 1 from ACCOUNT"/>
<property name="Pool.PingEnabled" value="false"/>
<property name="Pool.PingConnectionsOlderThan" value="1"/>
<property name="Pool.PingConnectionsNotUsedFor" value="1"/>
</dataSource>
</transactionManager>
<sqlMap resource="com/zzr/resource/User.xml"/>
</sqlMapConfig>
//=======================User类================
   package com.zzr.entiy;import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;public class User implements Serializable {

    private Integer id;
    
    private String name;
    
    private Integer sex;
        
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}    
}
 
各位帮我看看 那个错是怎么回事?是因为SP4补丁没打上吗?

解决方案 »

  1.   


    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以上.网上摘录:
      

  2.   

    看看1433端口是否打开,没打开的话XP下就打sp3 or sp4补丁.注意防火墙什么的.
      

  3.   

    你的SQL驱动包是不是Windows官方的那三个.jar包?你可以试下用Jtds 数据库连接驱动jar包。
      

  4.   

    原来是路劲写错了URL连接写错了。。
      

  5.   

    我遇到了这个问题,按照网上的指示,查了端口是1433,打了补丁是sp4,还是报错,后来将连接jdbc处的localhost 改成 本机的IP  :192.*.*.*  神奇地好了