我在网上下载了一个SQLServer2000的JDBC驱动程序,但是我不知道怎样在代码中实现数据库连接.我写了一个DatabaseBean,如下:package com.hy.bean;import java.sql.*;public class DatabaseBean {

public DatabaseBean() {
try{
Class.forName(driver).newInstance();
conn=DriverManager.getConnection(url);
}
catch (Exception e) {
System.out.println("DatabaseBean()->"+e);
}
}

public ResultSet doSelect(String sql) {
try {
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
if (rs.next()) 
return rs;
else 
return null;
}
catch (SQLException e) {
System.out.println("doSelect()->"+e.getMessage());
return null;
}
finally {
try {
if (rs!=null) 
rs.close();
if (stmt!=null) 
stmt.close();
if (conn!=null) 
conn.close();
}
catch (SQLException e) {
System.out.println("doSelect()->"+e.getMessage());
return null;
}
}
} public int doUpdate(String sql) {
int row=0;
try {
stmt=conn.createStatement();
row=stmt.executeUpdate(sql);
if (row!=0) return row;
else return 0;
}
catch (SQLException e) {
System.out.println("doUpdate()->"+e);
return 0;
}
finally {
try {
if (rs!=null) 
rs.close();
if (stmt!=null) 
stmt.close();
if (conn!=null) 
conn.close();
}
catch (SQLException e) {
System.out.println("doSelect()->"+e.getMessage());
return 0;
}
}
}

public int doInsert(String sql) {
return doUpdate(sql);
}

public int doDelete(String sql) {
return doUpdate(sql);
}

private static final String driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";

private static final String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=公寓;user=sa;password="; private Connection conn=null;
private Statement stmt=null;
private ResultSet rs=null;

public static void main(String[] args) {

DatabaseBean db=new DatabaseBean();

String sql="select * from user";
ResultSet rs=db.doSelect(sql);
try{
while (rs.next()) {
//System.out.println("------------------------------");
System.out.println("id="+rs.getString("id"));
System.out.println("username="+rs.getString("username"));
System.out.println("password="+rs.getString("password"));
System.out.println("------------------------------");
}
}
catch (SQLException e) {
System.out.println("main()->"+e);
}

}

}编译无误,但是执行时总是出现:
java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver请问高手们,我现在该怎么办?

解决方案 »

  1.   

    ClassNotFoundException 是由 Class.forName(driver) 引起的,这是个运行时异常,编译时是无法发现的。解决办法是将驱动程序安装目录下的三个 .jar 文件添加到 classpath 中。楼主 JAVA 语言基础还未打好。
      

  2.   

    在CLASSPATH中,应该怎样填写?是否为:
    %JAVA_HOME%\lib;D:\jdk\lib\msutil.jar;D:\jdk\lib\mssqlserver.jar;D:\jdk\lib\msbase.jar请指教!
      

  3.   

    CLASSPATH=.;D:\Program Files\Microsoft SQL JDBC\lib\mssqlserver.jar;D:\
    Program Files\Microsoft SQL JDBC\lib\msbase.jar;D:\Program Files\Microsoft SQL J
    DBC\lib\msutil.jar
      

  4.   

    我单独把这3个文件拷到了jdk\jdbc\下,此时编译运行,出现如下信息:DatabaseBean()->java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing
     socket.
    Exception in thread "main" java.lang.NullPointerException
            at com.hy.bean.DatabaseBean.doSelect(DatabaseBean.java:19)
            at com.hy.bean.DatabaseBean.main(DatabaseBean.java:89)
    Press any key to continue...我现在该怎么办?
      

  5.   

    doselect 部分代码写的有问题: try {
    if (rs!=null) 
    rs.close();
    if (stmt!=null) 
    stmt.close();
    if (conn!=null) 
    conn.close();
    }
    catch (SQLException e) {
    System.out.println("doSelect()->"+e.getMessage());
    return null;
    } 这几句不合理,该方法需要返回一个 ResultSet,但你却关闭了连接。ResultSet 是基于连接的,连接一关就完蛋了。这几句我随手删了。其他部分我只改了一下数据库名称、表名称、字段名称,然后编译运行,代码没有问题。SQL Server 你熟悉吗?估计你的数据库服务器有问题。你要做一个测试——运行查询分析器,选择 "SQL Server验证方式",确保使用 sa 和空密码可以连接成功。
      

  6.   

    将SQL jdbc驱动copy 到classpath下.
      

  7.   

    楼主的SQL Server 打了SP3或SP3以上的补丁了么?
      

  8.   

    怎么打去微软下,也就是JDBC要是SP3这个版本的
      

  9.   

    http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=8e2dfc8d-c20e-4446-99a9-b7f0213f8bc5
      

  10.   

    打不到驱动类啦,在classpath中加入此此驱动*.jar就行的了!祝你好运!