JDBC: シンプルな MSSql 接続例が機能しない 質問する

JDBC: シンプルな MSSql 接続例が機能しない 質問する

私は Java を学習中で、JDBC 経由で MSSQL からデータを取得するために簡単な操作を実行する必要があります。私の本の例は機能しません (ただし、数年前のものです)。また、以下の MS の例も機能しません。

http://msdn.microsoft.com/en-us/library/ms378956(v=sql.90).aspx

これが私のコードです:

package javasql;
import java.sql.*;
import java.util.*;

public class Program {

    private static String url = "jdbc:sqlserver://localhost\\SQLExpress;database=Northwind;integratedSecurity=true;";
    //private static String userName = "sa";
    //private static String password = "myPassword";

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        RunDemo();
    }

    public static void RunDemo() {
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            Connection connection = DriverManager.getConnection(url);

            Statement statement = connection.createStatement();
            ResultSet results = statement.executeQuery("SELECT ProductName, Price FROM Products ORDER BY ProductName");

            while(results.next()) {
                System.out.println("Product Name: " + results.getNString("ProductName") + " Price: $" + results.getFloat("UnitPrice"));
            }

        } catch (ClassNotFoundException | SQLException ex) {
            System.out.println(ex.getMessage());
        }
    }
}

コードを実行しても、例外はスローされません。出力ウィンドウに次の内容が表示されます。

run:
com.microsoft.sqlserver.jdbc.SQLServerDriver
BUILD SUCCESSFUL (total time: 0 seconds)

私は NetBeans 7.2 を使用しています。誰か実用的な例を教えてください。

編集:

ちなみに、 が表示されている接続文字列については、\\SQLExpressそれを削除して代わりに を使用することも試しましたがinstanceName=SQLExpress、それでも効果はありませんでした。

編集2:

OK、MS から MSSQL 用の最新の JDBC ドライバーをダウンロードし、そこにある 2 つの JAR ファイルを参照しました。これで、次の出力が得られます。

run:
The connection to the host localhost, named instance SQLExpress failed. 

Error: "java.net.SocketTimeoutException: Receive timed out". 

Verify the server and instance names and check that no firewall is blocking UDP traffic to port 1434.  
For SQL Server 2005 or later, verify that the SQL Server Browser Service is running on the host.
BUILD SUCCESSFUL (total time: 15 seconds)

進捗状況...少なくとも今は接続しようとしていることがわかりますが、上記のエラーについて誰か教えてくれませんか?

編集3:

さらに 2 つの問題が修正されました。1 つは SQL Server Browser を有効にすること、もう 1 つは SQL Server の TCP/IP を有効にすることです。@Vikdor さん、ありがとうございます。今度は次のエラーが発生します。

run:
The TCP/IP connection to the host localhost, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".
BUILD SUCCESSFUL (total time: 15 seconds)

Windows ファイアウォールをチェックし、そのポートを許可する受信規則を追加しましたが、それでも上記のエラーが発生します。何かアイデアはありますか?

編集4:

このリンクの解決策を試しました:http://www.coderanch.com/t/306316/JDBC/databases/SQLServerException-TCP-IP-接続ホスト

EDIT 3 でエラーが発生しなくなりました。今度は別のエラーが発生しています...

run:
Sep 21, 2012 11:33:16 AM com.microsoft.sqlserver.jdbc.AuthenticationJNI <clinit>
WARNING: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path
This driver is not configured for integrated authentication. ClientConnectionId:577f359e-4774-45f3-96fb-588785911817
BUILD SUCCESSFUL (total time: 14 seconds)

もう、これにうんざりしています。なぜ Java なのでしょう。なぜ?? 真面目な話、私は主に .NET で作業していてよかったです。さて、解決策が見つかったら、私が今まさにそうしているように、他の人たちが気が狂ってしまう前に、ここに投稿して、他の人たちの役に立つようにします...

編集5:

これは役に立ちました:Java を MicrosoftSQLServer 2005 に接続する

ディレクトリ パスを PATH 環境変数に入力しました。うまくいかなかったので、sqljdbc_auth.dllJDK フォルダーにも入力しましたC:\Program Files\Java\jdk1.7.0_04\bin。解決しました。

ベストアンサー1

さて、私の問題を解決したものは次のとおりです。

  1. 最新の MSSQL JDBC ドライバーをここからダウンロードしてください:参考文献

  2. プロジェクト内の 2 つの JAR ファイルを参照しました:sqljdbc.jarそしてsqljdbc4.jar(上記の両方が必要なのか、それとも 1 つだけが必要なのかはまだわかりません。)

  3. SQL Server Browser Windowsサービスが実行されていることを確認します

  4. SQL Server構成マネージャーを開き、SQLEXPRESS のプロトコルSQL Server ネットワーク構成. 右クリックしてプロトコルプロパティを選択します。設定有効= はい。

  5. そこにいる間に、クリックしてくださいIPアドレスタブをクリックしてセクションを見つけますIP すべて。 セットTCPポート1433年まで。

  6. 追加sqljdbc_auth.dllあなたのPATH環境変数。 私の場合:D:\Java\sqljdbc_4.0\enu\auth\x64

  7. コピーsqljdbc_auth.dllあなたのJDKディレクトリ。 私の場合:C:\Program Files\Java\jdk1.7.0_04\bin

これが誰かの役に立つことを願います。

おすすめ記事