本机安装的是SQLserver 2005简体中文开发版,问题是连接数据库时报错,代码如下:
import java.sql.*;public class DBlogic {
Connection conn=null; public Connection getConn(){
try {
//Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
//conn = DriverManager.getConnection("jdbc:odbc:Mydata2","sa","sinosoft"); conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=pubs;user=sa;password=sinosoft");
System.out.println("连接成功");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("有异常");
}
return conn;
}
public static void main(String args[])
{
new DBlogic().getConn();
}}
另注:那三个数据包已经添加了的.而且路径也正确.
很郁闷的是,这个代码完全复制到别人的机品上能用.上面代码用数据源的方式连接成功
报错总是输出"有异常"
也就是说conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=pubs;user=sa;password=sinosoft");
这句话出问题了!百思不得其解,从语法来说是肯定没有错的.用数据源又可以成功连接上去.
最后老师也只能得出系统的问题这个答案.不知道有没有高手遇到过这种情况.是不是要打什么补丁呢,2005已经很高级了还需要打什么补丁呢,请高手踢教谢谢!
新人没分,请大家谅解!

解决方案 »

  1.   

    错误信息如下:
    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 Jdbc.DBlogic.getConn(DBlogic.java:22)
    at Jdbc.DBlogic.main(DBlogic.java:33)
    有异常
      

  2.   

    conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=pubs;user=sa;password=sinosoft"); 
    着行代码应该是
    conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=pubs","sa","sinosoft"); 
    试下看......
      

  3.   

    2005最迷惑人的地方是和2000在配置上已经有了改变 而且它可能在某种程度上还能延用 包括驱动  SQLServer2005的连接参数为 Driver=com.microsoft.sqlserver.jdbc.SQLServerDriver URL = jdbc:sqlserver://HostName;database=DatabaseCatalog 
      

  4.   

    还有就是Connection不要声明成成员变量,再就是得连接的方法要声明成同步的synchronized,防止并发,(如果你这个是共公方法的话)
      

  5.   

    netstat -a -n
    看一下1433口状态
      

  6.   

    是不是在你的机子上运行出错,那我猜你的机器上应该有城市热点的drcom上网认证客户端!
    这个东西会导致你连接异常!
    如果没有drcom哪么可能系统的某些服务没启用!
      

  7.   

    写java程序就不要用ms的数据库了吧,用mysql吧o(∩_∩)o...
      

  8.   

    这个问题、我在上java数据库编程的第一节课时也遇到了
     的确是有一个补丁没有打
      是一个关于数据库补丁
    Error establishing socket.
    这个异常是与那个补丁有关
      至于具体是什么补丁我下次告诉你
    我找一下
      

  9.   

    你换个别的数据库看看,别的要是是好的话,有可能是2005的问题,你下载个补丁看看的嘛http://www.bcclt.cn编程村论坛
      

  10.   

    我的和搂住一样的问题
    sp4补丁打了一样出错,在别的及其运行可以,自己的就不行
    去掉micosoft就报tcp/ip 异常
    2000驱动,Error establishing socket. 2005驱动(错误:没有恰当驱动)都不行
      

  11.   

    呵呵,现在我已经证实我的问题,是因为SQLsever2005配置文件里,没有启动TCP/IP,端口没有打开!希望有同样问题的朋友去看看
    自己的数据库这个端口打开了没有!!!
      

  12.   

    兄弟怎么启动TCP/IP和端口打开呀