事情的情况是这样的,我在看《JAVA从入门到精通》(清华大学出版社)这本书,在看到了第20章《数据库操作》的时候,不是有一个JDBC的技术嘛,也就是通过一些JAVA的代码去连接到数据库中去,然后可以执行一些查询修改更新的操作嘛。然后我就按照书本的代码去敲啊。。不过问题来了,下面我一一详述。首先下面是我的实验代码:
package com.Hong;
import java.sql.*;public class Gradation {
static Connection con;
static Statement sql;
static ResultSet res;
public Connection getConnection(){
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("数据库加载驱动成功,yeah!");
}catch(ClassNotFoundException e){
e.printStackTrace();
}
try{
con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;"+
  "DatabaseName=db_hong","","");
System.out.println("数据库连接成功");
}catch(SQLException e){
e.printStackTrace();
}
return con;
}
public static void main(String[] args){
Gradation c = new Gradation();
con = c.getConnection();
try{
sql = con.createStatement();
res = sql.executeQuery("select * from TABLE2");
while(res.next()){
String id = res.getString("id");
String name = res.getString("name");
String sex = res.getString("sex");
String brithday = res.getString("brithday");
System.out.println("编号:"+ id);
System.out.println("姓名:"+ name);
System.out.println("性别:"+ sex);
System.out.println("生日:"+ brithday);
}
}catch(Exception e){
e.printStackTrace();
}
}}
这段代码的大概也就是我想从数据库里面提取一些数据并显示出来嘛,但是这段代码就运行不了,出现下面的错误提示:
数据库加载驱动成功,yeah!
com.microsoft.sqlserver.jdbc.SQLServerException: 到主机  的 TCP/IP 连接失败。 java.net.ConnectException: Connection refused: connect
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.loginWithoutFailover(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at com.Hong.Gradation.getConnection(Gradation.java:16)
at com.Hong.Gradation.main(Gradation.java:26)
java.lang.NullPointerException
at com.Hong.Gradation.main(Gradation.java:28)
就是数据库加载驱动成功,但是连接不了数据库(也就是说你连接不了就肯定取不了里面的数据了啊)。
(PS:上面代码里面的数据表(名)及数据内容我已经在MSSQL2000里面创建了,在运行上面代码的时候MSSQL2000服务也启动的)
但是总是提示到主机的TCP/IP连接失败,然后我在cmd下telnet localhost 1433,也提示连接失败,也就是说我的1433端口(服务)没有打开吗???但是我已经通过“打开网络连接属性--高级--设置--例外--添加端口(输入端口号)”这样的操作添加了一个1433端口进去了,但是为什么还是不行呢(电脑我已经重启过了)。我现在只想能让上面的代码能运行并且能在控制台上显示我的查询之后的结果并显示出来!
但是我弄了很多天都弄不出个所以然来,希望大家能给点中肯的意见••谢谢!

解决方案 »

  1.   

    在连接数据库的时候没有加用户名和密码就是以下这句:
    con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;"+
    "DatabaseName=db_hong","username","password");
      

  2.   

    数据库连接都失败了,后面的什么插入、查询当然就不可能成功了con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;"+
    "DatabaseName=db_hong","","");连接 sql server 数据库的话,应该要提供用户名和密码,如果数据库设置成 windows 和 sql server 用户混合登录的话
      

  3.   

    sqlserver的版本?补丁是否打了?
      

  4.   

    可能原因:
    1。第一个SqlServer服务没有启动!
    2。没有打上补丁
    3。防火墙拦截了
      

  5.   


    1楼,我觉得不是啊,在没有用户名和密码的情况是的格式是“DatabaseName=db_hong","","";"这样的啊。
      

  6.   

    图片发不了,我用打字的
    登录名 没
    用户名 dbo图片的内容大概这样!
      

  7.   

    看看TCP/IP协议是否启用;看看端口是否正确,具体的方法是在SqlServer中有一个“服务器网络实用工具”,看看右边的启用的协议中有没有TCP/IP,有的话,说明TCP/IP启用了;选选TCP/IP,点击属性,看看端口是否合适!
      

  8.   

    有的,之前看过了,有启用TCP/IP协议和命名管道的。
      

  9.   

    我记得SQL Server 2000 的1433端口是安装了SP3或SP4补丁才开的,如果你的SQLServer2000没打补丁,那1433端口是不开的,自然连接不上
      

  10.   

    选中TCP/IP点击属性,看看端口是多少?
      

  11.   

    com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 的 TCP/IP 连接失败SqlServer数据库的网络设置没更改 
    学习的话一般都是用的本地连接,改成网络连接就行了....
      

  12.   

    这已经明显是服务器设置的问题了,你连Telnet都登录不了,问题很明显了
      

  13.   

    有可能TCP/IP协议支持没开。
    进“服务器网络实用工具”,看看TCP/IP协议协议有没有启用。这里修改后记得重启SQL Server引擎。
      

  14.   

    首先你用户名和密码都没输入,怎么可能连接成功呢?还要JAR包导了没
      

  15.   

    只在一本书上吊死的做法最愚蠢了,何况你吊死的那本书还不是经典书。你既然有很多天的时间,足够你找很多其他的资料了。但你只是光想,一点用都没有,思而不学则殆。jdbc连ms sql数据库也很常用啊,如果你用其他客户端能连上的话,那去看看驱动包有没有问题。微软的东西很是恶心,用起来比mysql和oracle麻烦多了,推荐学习阶段用mysql。
      

  16.   

    我觉得不会是密码和用户名的问题,因为我在安装MSSQL2000的时候是用WINDOWS验证方式的,所以应该不用用用户名和密码的,实在是烦恼啊,不知道是不是补丁打错的问题呢,但是我已经打了SP3a的补丁了啊。。端口也设置好了,是1433,但是就是链接不起来!!!!
      

  17.   

    说实在的,sqlserver是挺恶心的
      

  18.   

    jdbc:microsoft:sqlserver://MyDbComputerNameOrIP:1433;databaseName=master连接路径
      

  19.   


    con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;"+
    "DatabaseName=db_hong","sa","");//改改这句,用户名用sa,密码为空试试