0

JDBC を使用して Java で Microsoft SQL Server 2005 に接続しようとしていますが、次の例外が発生します。私のプロジェクトは Eclipse で実行されていません。「要求されたリソースが見つかりません」(すべてのサーバー構成を完了し、サーバーからプロジェクトを追加および削除する) と表示され、コンソールから実行すると「Class not found exception」と表示されます。ビルド パスを使用して JAR を作成し、WEB-INF/lib にも配置します。しかし、次の接続が得られないのは私のコードです。

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

import com.microsoft.sqlserver.jdbc.SQLServerDriver;
/** 
 * @author www.javaworkspace.com 
 *  
 */  
public class SMSdao {  
    public static void main(String[] args) {  
        try {  

         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            Connection connection = DriverManager  
                    .getConnection(  
                            "jdbc:sqlserver://192.128.10.17:1433;databaseName=TEK_R;selectMethod=cursor",  
                            "sa", "sai@123");  

            System.out.println("DATABASE NAME IS:"  
                    + connection.getMetaData().getDatabaseProductName());  
            Statement statement = connection.createStatement();  
            ResultSet resultSet = statement  
                    .executeQuery("SELECT * FROM dbo.SMS_OUT");  
            while (resultSet.next()) {  
                System.out.println("Message:"  
                        + resultSet.getString("MessageIn"));  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
}

AND スタック トレースは次のとおりです。

java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:186)
        at SMSdao.main(SMSdao.java:13)

すべてを試し、ウェブで見つけたすべてのことを行いました。Windows 7でjdk 7とtomcat 6を使用しています。

4

2 に答える 2

2

Microsoft から SQLServerDriver JDBC をダウンロードする必要があります。Class.forName は、指定したクラス名を検索していますが、クラスパスで見つかりません。

http://msdn.microsoft.com/en-us/sqlserver/aa937724

jar をプロジェクトのクラスパスに入れるだけです (Tomcat の共​​有ライブラリの方が優れています)。

于 2012-05-12T06:48:36.130 に答える
0

代わりに jTDS を使用することもお勧めします: http://jtds.sourceforge.net/

歴史的に、Microsoft の JDBC ドライバーは、JDBC 仕様の重要で有用な部分を完全に実装できていませんでした。jTDS は、より完全な機能を備えている必要があり、オープン ソースです。

于 2012-05-12T06:54:24.803 に答える