本人初学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)本机防火墙已经关掉,哪位大哥给解决下,小弟不胜感激
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)本机防火墙已经关掉,哪位大哥给解决下,小弟不胜感激
27行 是什么?
27行 : sta = con.prepareStatement(sql);
Connection refused: connect ::是不是没有配置端口
77行:SQLtest obj=new SQLtest();
驱动是照着SQL2005JDBC帮助来弄得 JRE库里我已经把驱动得那个JAR 给放进去了
27行 : sta = con.prepareStatement(sql);
at sql2005test.SQLtest.main(SQLtest.java:77)
77行:SQLtest obj=new SQLtest();
PrepareStatement 带有 IN 参数或不带有 IN 参数的 SQL 语句都可以被预编译并存储在 PreparedStatement 对象中。然后可以有效地使用此对象来多次执行该语句。
为了处理受益于预编译的带参数 SQL 语句,此方法进行了优化。如果驱动程序支持预编译,则 prepareStatement 方法会将该语句发送给数据库进行预编译。一些驱动程序可能不支持预编译。在这种情况下,执行 PreparedStatement 对象之前无法将语句发送给数据库。这对用户没有直接的影响;但它的确会影响抛出某些 SQLException 对象的方法。
楼主截止到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
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");
打开sql2005 configuration manager>sqlserver 2005网络配置>sqlexpress的的协议>看右边,启用tcp/ip>然后鼠标右键"tcp/ip",点属性>
选择“IP地址”>在最下面的"ipall"的“TCP端口”中填入1433>确定>重启SQL服务
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
URL = "jdbc:sqlserver://localhost:1433;DatabaseName=tempdb";
按照这个试一下!
你少写了一个端口号:1433
("jdbc:sqlserver://127.0.0.1:1433;databaseName=student;user=sa;password=sa");
楼主请相信我,我用你的程序测试过了,是端口问题,或者说与SQLServer服务器无法建立连接。
解决办法:
1、在URL中添加端口号,默认端口号为1433,试试看;
2、如果还不行,则检查Sql server是否开启了tcp/ip服务,使用25楼的方法进行检查和配置。
引文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
{
。