我在教室里可以跑通的连数据库程序到了家里就不行了...报错如下:
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(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at pageTest.db.DBFactory.connect(DBFactory.java:33)
at pageTest.db.DBFactory.main(DBFactory.java:95)开始以为是我的SQL Server2000要打补丁(SP4),下了一个安装了以后还是不行...回头看我的安装盘写的是SQL Server2000 SP4...看来不是这个问题.
SQLServer查询分析器中输入:"select @@version",得到:"Microsoft SQL Server  2000 - 8.00.194 (Intel X86)   Aug  6 2000 00:57:48   Copyright (c) 1988-2000 Microsoft Corporation  
Personal Edition on Windows NT 5.1 (Build 2600: Service Pack 2) ".我是以Windows 身份登录的,SQL Server身份登录的话,输入username="sa",pwd=""报失败...是否是没安好啊...//======================源代码如下==================================//
package pageTest.db;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBFactory {
private String  driver;
private String  url;
private String  uid;
private String  pwd;
private Connection conn;
private Statement  stat;
private Statement  stmt;
private ResultSet  rs;
public DBFactory(){

}
public boolean connect() throws SQLException{
try{
url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DataName=pubs";
driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
uid="sa";
pwd="";
Class.forName(driver);
/*sqlserver中创建"a"用户-->企业管理器下-->local下安全性-->登录-->右键“新建”
 * (1.常规下创建创建"a"用户,选SQL Server身份验证=“”,指定数据库;
 *   2.服务器角色下选第一个权限;
 *  3.数据库访问下选要访问的数据库“pubs”--ok)*/
Connection conn=DriverManager.getConnection(url,uid,pwd); stat=conn.createStatement();
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
} catch (ClassNotFoundException e) {
System.out.println("driver wrong Problem~");
e.printStackTrace();
return false;
} return true;
}
public void disconnect() throws SQLException{
try {
if(rs!=null)
rs.close();
if(stat!=null)
stat.close();
if(conn!=null)
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public boolean executeSqlNoQuery(String sql){
try {
conn.setAutoCommit(false);
stat.execute(sql);
conn.commit();
return true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
      // TODO Auto-generated catch block
e1.printStackTrace();
}
return false;
}
}
public ResultSet executeSqlwithStmtQuery(String sql){
try{
rs=stmt.executeQuery(sql);
}catch(SQLException e) {
e.printStackTrace();
}
return rs;
}
public ResultSet executeSqlWithQuery(String sql){
try{

rs=stat.executeQuery(sql);
}catch(SQLException e) {
e.printStackTrace();
}
return rs;
}
//=======Main for Test==========//
public static void main(String[] args){
DBFactory dbf=new DBFactory();
try {
dbf.connect();
ResultSet rs=dbf.executeSqlwithStmtQuery("sp_tables");
while(rs.next() ){
System.out.println(rs.getString(1));

}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
dbf.disconnect();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}
//============================================================//

解决方案 »

  1.   

    url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DataName=pubs";
    driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
    uid="sa";
    pwd="";
    Class.forName(driver);
    如果MSSQL用sa不行这样做是不可能连接上的
      

  2.   

    地址:
    http://www.microsoft.com/downloa ... p;DisplayLang=zh-cn
    下载这个
    chs_sql2ksp3.exe       56603 KB
      

  3.   

    sql server2000是必须要安装为sp3以上的版本 1433端口才会允许jdbc驱动连接的,如果没有升级为sp3以上版本 推荐你想办法升级一下.不过sql server和java的开发并不是一个好的组合方式,不管是在性能上还是在效率上,如果不是为了旧数据迁移问题,推荐用mysql或oracle之类的数据库.
      

  4.   

    我想我知道答案了:我光下了没安装...笨!
    要运行 Setup.bat。再试...通过此次问题,已经感到SQL Server 的确不太好用,打算换MySQL啦~
    Oracle太大了...的确不错.
      

  5.   

    好了安装完毕,但是,
    SQLServer查询分析器中输入:"select @@version",得到:
    Microsoft SQL Server  2000 - 8.00.760 (Intel X86)   Dec 17 2002 14:22:05   Copyright (c) 1988-2003 Microsoft Corporation  Personal Edition on Windows NT 5.1 (Build 2600: Service Pack 2) 怎么不是Pcak 3??
    ===================================
    运行程序,新的错误产生了,啊~~~~~~倒!
    ===================================
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。
    at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSLoginRequest.processReplyToken(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(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(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at pageTest.db.DBFactory.connect(DBFactory.java:33)
    at pageTest.db.DBFactory.main(DBFactory.java:95)
    ==============================================================
    似乎是我的SQL装的还是有问题...
      

  6.   

    我重新试了一下还是不行~>_<~
    /*sqlserver中创建"qi"用户-->企业管理器下-->local下安全性-->登录-->右键“新建”
    * (1.常规下创建创建"qi"用户,选SQL Server身份验证=“”,指定数据库pubs;
    *   2.服务器角色下选第一个权限;
    *   3.数据库访问下选要访问的数据库“pubs”--ok)*/
    ===============================================================
    url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DataName=pubs";
    driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
    uid="qi";
    pwd="";
    Class.forName(driver);
    Connection conn=DriverManager.getConnection(url,uid,pwd);
    ================================================================
    报错:
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]用户 'qi' 登录失败。原因: 未与信任 SQL Server 连接相关联。
    at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSLoginRequest.processReplyToken(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(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(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at pageTest.db.DBFactory.connect(DBFactory.java:33)
    at pageTest.db.DBFactory.main(DBFactory.java:95)
    ================================================================
    ???
      

  7.   

    你用SU帐户登陆SQLServer可以不?
      

  8.   

    感觉好像是sql装的时候有问题
      

  9.   

    是不是不支持空密码啊,我用MYSQL是这样的
      

  10.   

    验证方式啊,你的验证方式是windows 用户 还是 sa的?你用sa 连接看看
      

  11.   

    我上查询分析器,连接使用Windows身份验证;
    用sa登录报错:
    "服务器:消息 18452,级别 16,状态 1
    [Microsoft][ODBC SQL Server Driver][SQL Server]用户 'sa'登录失败.原因:未与信任 SQL Server连接相关联."
      

  12.   

    我也有这个问题,一直没解决。不过我装的SQL个人版
      

  13.   

    sqlserver如果用查询分析器都上不去的话,说明你的安装有问题,
    当可以登陆上以后再达sp3包,我们用的xp sp2系统把不安全的0.0.0.0:1433端口给屏掉了,
    所以要重新安装这个补丁,获得1433端口的监听,
    都安装完毕后打开sqlserver,再在运行下输入->cmd->netstat -an
    查看是否有0.0.0.0:1433 LISTENING
    有的话说明打包成功,
    然后看你的代码,抛出什么异常.
      

  14.   

    如果是xp sp2的版本建议先升级数据库的补丁,至于你文中说的用sa无法登陆成功说明sa不是你的sql server2000的合法用户,建议如下:
    1.用你的系统用户名和密码作为连接数据库的用户名和密码,在打好补丁的基础上应该没有问题了
    2.在sql server2000中添加用户sa,设置它的权限
      

  15.   

    上面没有说清楚,比如你的系统用户名是person ,密码是123,连接数据库采用如下方式:
    将代码
    uid="sa";
    pwd="";
    改为
    uid="person";
    pwd="123";
      

  16.   

    这两天感冒病毒来袭,(最近感冒的人好多...我就开始鼻子发痒...眼皮变重...>_<|| )我再试试,谢谢大家的回复哦~ 
    如果ok的话再告诉大家,3Q~