首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于JDBC连接sql server2005的有关问题

2013-04-07 
关于JDBC连接sql server2005的问题代码如下:package com.jrc.jdbcimport java.sql.Connectionimport jav

关于JDBC连接sql server2005的问题
代码如下:
package com.jrc.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;




public class JdbcTest {

/**
 * @param args
 * @throws SQLException 
 */
//public final static String DRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver"; 
//public final static String URL="jdbc:sqlserver://127.1:1433;DatabaseName=MySchool";
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// TODO Auto-generated method stub
Connection conn=null;
Statement st=null;
ResultSet rs=null;

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn =                    DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=StudentS");
st = conn.createStatement();
System.out.println("连接成功");
rs = st.executeQuery("select*from dbo.Table_1");
while(rs.next()){
System.out.println(rs.getInt(1)+"\t");
System.out.println(rs.getInt(2)+"\t");
System.out.println(rs.getString(3)+"\t");


rs.close();
st.close();
conn.close();
}

}
运行时出现这样的错误:
Exception in thread "main" 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:207)
at com.jrc.jdbc.JdbcTest.main(JdbcTest.java:27)
sql server的TCP服务我也开了,就是不知道问题错在哪???
我那个驱动包名是:sqljdbc.jar
电脑运行系统是:Win7 为了更好的给LZ解释清楚,我自己动手安装了SQLServer2005 ,还好有自己还有64bit版的。结果不会影响。(因为我自己的电脑是64bit)

关于JDBC连接的代码我就不封装了,完全按照LZ的代码来。
如下:


package sqlserver;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JdbcTest {
    
    public static void main(String []args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            //注册驱动


            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            //创建连接
            conn = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=StudentS","sa","sa");
            //创建语句
            stmt = conn.createStatement();
            //执行语句
            rs = stmt.executeQuery("select * from dbo.Table_1");
            //处理语句
            while(rs.next() && rs != null) {
                System.out.println(rs.getInt(1)+"\t");
                System.out.println(rs.getInt(2)+"\t");
                System.out.println(rs.getString(3)+"\t");
            }
            //释放资源
            rs.close();
            stmt.close();
            conn.close();
            
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}


为了排除问题,我首先没有开启TCP/IP
第一次报错如下
console:

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:207)
at sqlserver.JdbcTest.main(JdbcTest.java:19)


开启TCP/IP后:
这时服务器需要重新启动
停止 SQLServer2005服务器
net stop mssqlserver
启动 SQLServer2005服务器
net start mssqlserver

console:


2013-4-5 16:07:07 com.microsoft.sqlserver.jdbc.AuthenticationJNI <clinit>


警告: Failed to load the sqljdbc_auth.dll
com.microsoft.sqlserver.jdbc.SQLServerException: 用户 '' 登录失败。该用户与可信 SQL Server 连接无关联。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSParser.parse(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(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:207)
at sqlserver.JdbcTest.main(JdbcTest.java:19)


提示我未输入用户名。

按照以上代码运行正确结果:
但是未出现LZ现在的结果。很遗憾,未能重现。
console:

2000
robbin
2
2300
archmage



数据库表:

create database StudentS
go
USE StudentS
GO
CREATE TABLE dbo.Table_1(
id int primary key,
salary int ,
username varchar (50)


insert into dbo.Table_1 (id,salary,username) values (1,2000,'robbin');
insert into dbo.Table_1 (id,salary,username) values (2,2300,'archmage');



[解决办法]

//conn = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=StudentS");
            conn = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=StudentS","sa","sa");

最主要是这两句代码。

其实这个,我写这么多可能多余了。因为问题很容易发现,只是重现LZ的异常,难。

热点排行