JDBC API forName异常(ClassNotFoundException)

时间:2012-06-29 04:58:17

标签: sql-server-2005 jdbc

我是JDBC应用程序开发的新手。我正在使用Visual Studio 2005编写JDBC应用程序。我需要将我的应用程序连接到MS SQL Server 2005.我已经安装了JDBC驱动程序3.0。 Java运行时版本1.6也安装在我的机器上。

我正在编写一个简单的代码来连接SQL服务器。我在inviromnet变量列表中设置了CLASSPATH。这是代码

package MyJDBCApp;

import java.sql.*;
import java.util.*;

public class Connect
{
   public static void main(String[] args)
   {
        String url = "jdbc:sqlserver://NOI1-501791:1433;databaseName=test;user=sa; password=asdf1234;";
        Connection con;
        Statement stmt;
        try
        {
           Class.forName("com.sqlserver.jdbc.SQLServerDriver");
        }
        catch (java.lang.ClassNotFoundException e)
        {
           System.err.print("ClassNotFoundException: ");
           System.err.println(e.getMessage());
        }
        try
        {
            con = DriverManager.getConnection(url);
            if (con != null)
                con.close();
        }
        catch (SQLException ex)
        {
           System.err.println("SQLException: " + ex.getMessage());
        }   
   }
}

每当我尝试调试此应用程序时,我都会收到Class not found异常。 任何人都可以帮我解决这个问题。

提前致谢。 问候 祖拜尔

1 个答案:

答案 0 :(得分:0)

通常不应使用CLASSPATH环境变量。它主要是Java早期的人工制品。通常程序有自己的私有类路径。

在IDE中,类路径是项目类路径(也就是构建路径),在IDE之外,它通常是jar清单中的Class-Path:条目。

只有在没有其他设置类路径的方法的情况下运行命令行时才会使用CLASSPATH环境变量(在使用java -jarjava -cp时完成)。

因此,您需要将JDBC驱动程序添加到项目类路径中。此外,如果您使用sqljdbc4.jar(它是MS SQL Server JDBC 3.0中的JDBC 4驱动程序),那么您甚至不需要执行Class.forName(...),因为JDBC 4引入了自动驱动程序注册。