本人初学JDBC用SQL2005JDBC驱动 写的代码
package sql2005test;
import java.sql.*;class SQLtest { public SQLtest() {
Connection con=null;
PreparedStatement sta=null;
String sql=null;
ResultSet rs=null;

try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) 
{
System.out.println(e.toString());
} try {

con = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1;databaseName=student;user=sa;password=sa");
} catch (SQLException e1) {
System.out.println(e1.toString());
}
try {
sql = "select * from stuinfo";
sta = con.prepareStatement(sql);
rs = sta.executeQuery();

while(rs.next())
{
System.out.println(rs.getString(1)+"   "+rs.getString(2));
}
} catch (SQLException e2) {
System.out.println(e2.toString());
}
finally
{
if(rs!=null)
{try 
{
rs.close();

catch (SQLException e) {
e.printStackTrace();
}}


if(sta!=null)
{try 
{
sta.close();

catch (SQLException e) {
e.printStackTrace();
}}


if(con!=null)
{try 
{
con.close();

catch (SQLException e) 
{
e.printStackTrace();
}}

}


}
public static void main(String[] args) {

SQLtest obj=new SQLtest();
}}运行出现如下错误
com.microsoft.sqlserver.jdbc.SQLServerException: 到主机  的 TCP/IP 连接失败。 java.net.ConnectException: Connection refused: connect
Exception in thread "main" java.lang.NullPointerException
at sql2005test.SQLtest.<init>(SQLtest.java:27)
at sql2005test.SQLtest.main(SQLtest.java:77)本机防火墙已经关掉,哪位大哥给解决下,小弟不胜感激

解决方案 »

  1.   

    at sql2005test.SQLtest. <init>(SQLtest.java:27) 
    27行  是什么?
      

  2.   

    at sql2005test.SQLtest. <init>(SQLtest.java:27) 
    27行 : sta = con.prepareStatement(sql);
      

  3.   

    27 、 77行是什么,
    Connection refused: connect ::是不是没有配置端口
      

  4.   

    at sql2005test.SQLtest.main(SQLtest.java:77)
    77行:SQLtest obj=new SQLtest();
    驱动是照着SQL2005JDBC帮助来弄得  JRE库里我已经把驱动得那个JAR 给放进去了
      

  5.   

    at sql2005test.SQLtest. <init>(SQLtest.java:27) 
    27行 : sta = con.prepareStatement(sql);
    at sql2005test.SQLtest.main(SQLtest.java:77) 
    77行:SQLtest obj=new SQLtest(); 
      

  6.   

    看你的package命名你似乎用的是sqlserver2005,那么进入2005管理器,启动TCP/IP,然后重启sqlserver试试
      

  7.   

     sta = con.prepareStatement(sql);
    PrepareStatement 带有 IN 参数或不带有 IN 参数的 SQL 语句都可以被预编译并存储在 PreparedStatement 对象中。然后可以有效地使用此对象来多次执行该语句。
    为了处理受益于预编译的带参数 SQL 语句,此方法进行了优化。如果驱动程序支持预编译,则 prepareStatement 方法会将该语句发送给数据库进行预编译。一些驱动程序可能不支持预编译。在这种情况下,执行 PreparedStatement 对象之前无法将语句发送给数据库。这对用户没有直接的影响;但它的确会影响抛出某些 SQLException 对象的方法。
      

  8.   

    感觉你没有写上端口,还有你的密码与用户名是正确的吗??代码到没有什么可说的,SQLserver好像还需要配置数据源的
      

  9.   

    从你的错误可以看出,tcp/ip的连接都没有建立,所以不涉及用户名和密码的问题。我感觉是你的sql server服务的问题,sql server应该没有在那个默认监听接口接收数据请求。你虽然可以在sql query analyzer中连接到服务器,但是走的不一定是tcpip方式。查查你的服务端问题吧,有一个专门的工具。
      

  10.   

    在下得那个SQL2005JDBC帮助档中没有说要配置数据源 应该是纯驱动吧,纯的好像不需要配置数据源吧,  启动SQL2005用本用户名和密码登陆正常
      

  11.   

    把这个con = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1;databaseName=student;user=sa;password=sa"); 改为:con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=student;user=sa;password=sa"); 试试看
      

  12.   

    con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=student","sa","sa"); 
      

  13.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主截止到2008-06-20 12:31:48的汇总数据:
    注册日期:2008-2-14
    上次登录:2008-6-13
    发帖数:3                  发帖分:60                 
    结贴数:0                  结贴分:0                  
    结贴率:0.00 %        结分率:0.00 %        
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  14.   

    安下面的方法做。
    1、检查SQL SERVER的登陆方式。是否为windows+sql server,检查sa能否登陆
    2、检查SQL SERVER的1433端口是否打开,防火墙是否有阻止。
    3、Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 这句应该改改为Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
      

  15.   

    试试手动打开sql2005的tcp/ip端口
    打开sql2005 configuration manager>sqlserver 2005网络配置>sqlexpress的的协议>看右边,启用tcp/ip>然后鼠标右键"tcp/ip",点属性>
    选择“IP地址”>在最下面的"ipall"的“TCP端口”中填入1433>确定>重启SQL服务
      

  16.   

    个人感觉还是sqlserver配置的问题,现在是连接都建立不了,只要参数没错,就与程序没什么关系
      

  17.   

    连接SqlServer2005
      Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
      URL = "jdbc:sqlserver://localhost:1433;DatabaseName=tempdb";
    按照这个试一下!
      

  18.   

    main" java.lang.NullPointerException 提示表示需要引入三个数据直连包,如果不行给数据库打补丁。
      

  19.   

    这里更精彩 http://64.56.70.102/index.php?fromuid=774453
      

  20.   

    SQL2005有个问题的,它默认拒绝远程连接。LZ看看是不是外围配置器的问题?要开启一下TCP/IP和Name pipe。
      

  21.   

    如果用的是sql server 2000确认是否打了sp3的补丁,con = DriverManager.getConnection("jdbc:microsoft:sqlerver:127.0.0.1//1433;databasename = student;","sa","sa")
      

  22.   

    con = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1;databaseName=student;user=sa;password=sa"); 
    你少写了一个端口号:1433
    ("jdbc:sqlserver://127.0.0.1:1433;databaseName=student;user=sa;password=sa"); 
      

  23.   


    楼主请相信我,我用你的程序测试过了,是端口问题,或者说与SQLServer服务器无法建立连接。
    解决办法:
    1、在URL中添加端口号,默认端口号为1433,试试看;
    2、如果还不行,则检查Sql server是否开启了tcp/ip服务,使用25楼的方法进行检查和配置。
      

  24.   

    顺便解释一下报NullPointerException 异常的原因吧:
    引文getConnection(...)方法出错,导致con 对象未空,即null;而连接错误的异常在程序中被catch了,所以程序继续向后执行,当执行到sta = con.prepareStatement(sql);语句时由于con对象为Null,产生了NullPointerException 异常。原代码如下:
    try {con = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1;databaseName=student;user=sa;password=sa");
    } catch (SQLException e1) {
    System.out.println(e1.toString());
    }
    try {
    sql = "select * from stuinfo";
    sta = con.prepareStatement(sql);
    rs = sta.executeQuery();为避免这种情况,建议将所有的数据库操作语句放在同一个try块内,这样其中任一个语句错误都可以使程序跳出try块执行异常处理并结束。
    例如:
    try {
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");con = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1;databaseName=student;user=sa;password=sa");sql = "select * from stuinfo";
    sta = con.prepareStatement(sql);
    rs = sta.executeQuery();while(rs.next())
    {
    System.out.println(rs.getString(1)+"  "+rs.getString(2));
    }} catch (Exception e) {
    System.out.println(e.toString());
    }
    finally
    {
      

  25.   

    没看你的代码,就看异常都知道是没开启TCP/IP    在sql中把那个启用再把最上边的那个禁用就好了   我没装,忘了叫什么名字了~~~