1

データベースとして SQL Server 2008 を使用しています。そして、JDBCを使用して、DB に Under としてアクセスしています。

public class DBConn {
public static void main(String[] args) throws ClassNotFoundException, SQLException{

    Connection con =null;
    //Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    con = DriverManager.getConnection("jdbc:sqlserver://BG4WS0552:1433;databaseName=DynamicsAx2009",
            "TESTUSER", "Sonata@123");
    Statement stmt = con.createStatement();
    String query = "SELECT * FROM custtable";
    DatabaseMetaData dmd = con.getMetaData();
    ResultSet rs = dmd.getColumns ("DynamicsAx2009", "%", "custtable", null) ;
    ResultSetMetaData rsmd = rs.getMetaData();
    int i = 1;
    while (rs.next()) {
        System.out.print(i++ + " COLUMN_NAME is " + rs.getString("COLUMN_NAME"));
        System.out.print(" TYPE:" + rs.getString("TYPE_NAME"));

        System.out.println("  DATA_TYPE is " + rs.getString("DATA_TYPE"));
    }
}}

上記のコードを参照してください。Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver") をコメントアウトしました。私のプログラムは正常に動作していますが。ドライバを登録せずに動作する方法を教えてください。

4

2 に答える 2

3

java.sql.DriverJDBC 4.0ドライバーは、すべての実装をにリストすることにより、の実装を宣言する必要があるため/META-INF/services/java.sql.Driverです。は、 java.util.ServiceLoaderDriverManagerを使用して、そのように宣言するすべてのドライバーを自動的にロードして登録します。

これにより、ドライバーがJDBC 4.0に準拠している限り、ドライバーをロードするためにClass.forName()(またはシステムプロパティ)を使用する必要がなくなります。jdbc.drivers

于 2012-11-29T12:48:52.623 に答える
1

Class.forName呼び出しは、最近のJDBCドライバーでは実際には必要ありません。それらが適切にインストールされている場合、それらは自分自身を登録します(jarファイルサービスマニフェストを使用)。

しかし、それが機能しなかった場合に備えて、コードを用意することをお勧めします。

于 2012-11-29T12:01:27.763 に答える