package test;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;public class DBConnection { private String Driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; private String user = "sa"; private String password = "fuyou";

private String url = "jdbc:microsoft:sqlserver://localhost:1433/pubs"; private Connection con = null; public DBConnection() { try {
Class.forName(Driver); con = DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("沒有找到驱动类!");
} catch (SQLException e) {
e.printStackTrace();
}
} public Connection getConnection() {
try {
con = DriverManager.getConnection(url, user, password);
} catch (SQLException e) { e.printStackTrace();
}
return con;
} public Statement getStatement() { // 产生结果集可以滚动,可以更新,但不敏感
Statement stmt = null;
if (this.con == null) {
this.con = getConnection();
}
try {
stmt = this.con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
} catch (SQLException e) { e.printStackTrace();
}
return stmt;
} public Statement getPreparedStatement(String sql) { // 预编译结果集可以滚动,可以更新,但不敏感
Statement stmt = null;
if (this.con == null) {
this.con = getConnection();
}
try {
stmt = this.con.prepareStatement(sql,
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
} catch (SQLException e) { e.printStackTrace();
}
return stmt;
} public ResultSet executeQuery(String sql) { // 查询方法
Statement stmt = null;
ResultSet rs = null;
if (this.con == null) {
this.con = getConnection(); }
stmt = getStatement();
try {
rs = stmt.executeQuery(sql);
} catch (SQLException e) { e.printStackTrace();
}
return rs;
} public int executeUpdate(String sql) { // 更新方法,返回更新的记录数
Statement stmt = null;
int num = 0;
if (this.con == null) {
this.con = getConnection();
stmt = getStatement();
}
try {
this.con.setAutoCommit(false);
num = stmt.executeUpdate(sql);
con.commit();
con.setAutoCommit(true);
} catch (SQLException e) { e.printStackTrace();
try {
con.rollback();
} catch (SQLException e1) { e1.printStackTrace();
}
}
return num;
} public void closeResultset(ResultSet rs) { // 关闭结果集
if (rs != null) {
try {
rs.close();
} catch (SQLException e) { e.printStackTrace();
}
}
} public void closeStatement(Statement stmt) {// 关闭stmt
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) { e.printStackTrace();
}
}
} public void closeConection() { // 关闭con
if (this.con != null) {
try {
this.con.close();
} catch (SQLException e) { e.printStackTrace();
}
}
}

public static void main(String args[]){
DBConnection db = new DBConnection();
ResultSet rs =db.executeQuery("select * from titles");
if(rs!=null){
try {
while(rs.next()){
System.out.println(rs.getCursorName());
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
异常信息:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Unable to connect.  Invalid URL.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at test.DBConnection.<init>(DBConnection.java:27)
at test.DBConnection.main(DBConnection.java:154)
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Unable to connect.  Invalid URL.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at test.DBConnection.getConnection(DBConnection.java:39)
at test.DBConnection.executeQuery(DBConnection.java:82)
at test.DBConnection.main(DBConnection.java:155)
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Unable to connect.  Invalid URL.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at test.DBConnection.getConnection(DBConnection.java:39)
at test.DBConnection.getStatement(DBConnection.java:50)
at test.DBConnection.executeQuery(DBConnection.java:85)
at test.DBConnection.main(DBConnection.java:155)
Exception in thread "main" java.lang.NullPointerException
at test.DBConnection.getStatement(DBConnection.java:53)
at test.DBConnection.executeQuery(DBConnection.java:85)
at test.DBConnection.main(DBConnection.java:155)
我已打上sp3补丁,装 了jdbc 驱动

解决方案 »

  1.   

    你的url出错了。jdbc:microsoft:sqlserver://localhost:1433/pubs换成这种写法试试:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs
      

  2.   

    改了之后出现下面这個错误提示:
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'titles' 无效。
    at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSExecuteRequest.processReplyToken(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
    at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)
    at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)
    at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)
    at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
    at com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)
    at com.microsoft.jdbc.base.BaseStatement.executeQuery(Unknown Source)
    at test.DBConnection.executeQuery(DBConnection.java:87)
    at test.DBConnection.main(DBConnection.java:156)
    我用自带的数据库pubs的表titles,怎么会无效啊?