web-dev-qa-db-ja.com

jTDS接続文字列を作成します

私のSQLサーバーインスタンス名はMYPC\SQLEXPRESSであり、データベース「Blog」に接続するためにjTDS接続文字列を作成しようとしています。誰でも私がそれを達成するのを手伝ってもらえますか?

私はこのようにしようとしています:

DriverManager.getConnection("jdbc:jtds:sqlserver://127.0.0.1:1433/Blog", "user", "password");

私はこれを取得します:

 Java.sql.SQLException: Network error IOException: Connection refused: connect
    at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.Java:395)
    at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.Java:50)
    at net.sourceforge.jtds.jdbc.Driver.connect(Driver.Java:184)
    at Java.sql.DriverManager.getConnection(Unknown Source)
    at Java.sql.DriverManager.getConnection(Unknown Source)
    at SqlConnection.Connect(SqlConnection.Java:19)
    at main.main(main.Java:11)
Caused by: Java.net.ConnectException: Connection refused: connect
    at Java.net.PlainSocketImpl.socketConnect(Native Method)
    at Java.net.PlainSocketImpl.doConnect(Unknown Source)
    at Java.net.PlainSocketImpl.connectToAddress(Unknown Source)
    at Java.net.PlainSocketImpl.connect(Unknown Source)
    at Java.net.SocksSocketImpl.connect(Unknown Source)
    at Java.net.Socket.connect(Unknown Source)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at Java.lang.reflect.Method.invoke(Unknown Source)
    at net.sourceforge.jtds.jdbc.SharedSocket.createSocketForJDBC3(SharedSocket.Java:305)
    at net.sourceforge.jtds.jdbc.SharedSocket.<init>(SharedSocket.Java:255)
    at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.Java:323)
    ... 6 more
51
Omu

JTDS Frequenlty Asked Questions で詳しく説明されているように、jTDSのURL形式は次のとおりです。

_jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]]
_

したがって、MYPCで実行されているMS SQL Serverによってホストされている「Blog」というデータベースに接続するには、次のようになります。

_jdbc:jtds:sqlserver://MYPC:1433/Blog;instance=SQLEXPRESS;user=sa;password=s3cr3t
_

または、getConnection(url, "sa", "s3cr3t")を使用する場合:

_jdbc:jtds:sqlserver://MYPC:1433/Blog;instance=SQLEXPRESS
_

EDIT:_Connection refused_エラーに関して、ポート1433でSQL Serverを実行していること、サービスが実行されていること、および着信接続をブロックするファイアウォールがありません。

111
Pascal Thivent

実際、ローカルのSQLEXPRESSインスタンスでTCP/IPプロトコルが有効になっているかどうかを実際に確認してください。

以下を確認してください:

  • 「スタートメニュー\プログラム\ Microsoft SQL Server 2012\Configuration Tools \」の「Sql Server Configuration Manager」を開きます。
  • 「SQL Serverネットワーク構成」を展開します
  • 「SQLEXPRESSのプロトコル」に移動します
  • TCP/IPを有効にする

問題がある場合は、スクリーンショットやその他の情報が含まれているため、詳細について このブログ投稿 を確認してください。

また、「SQL Server Browser」Windowsサービスがアクティブで実行されているかどうかを確認します

  • [コントロールパネル]-> [管理ツール]-> [サービス]に移動します。
  • 「SQL Server Browser」サービスを開いて有効にします(ニーズに応じて手動または自動にします)
  • 始めよう。

それでおしまい。

新しいローカルSQLExpressをインストールしたら、TCP/IPを有効にしてSQL Server Browserサービスを開始するだけで済みました。

SQLEXPRESSローカル接続のテストに使用するコードの下。もちろん、必要に応じてIP、DatabaseName、およびユーザー/パスワードを変更する必要があります。

import Java.sql.Connection;
import Java.sql.DatabaseMetaData;
import Java.sql.DriverManager;
import Java.sql.ResultSet;
import Java.sql.SQLException;

public class JtdsSqlExpressInstanceConnect {
    public static void main(String[] args) throws SQLException {
        Connection conn = null;
        ResultSet rs = null;
        String url = "jdbc:jtds:sqlserver://127.0.0.1;instance=SQLEXPRESS;DatabaseName=master";
        String driver = "net.sourceforge.jtds.jdbc.Driver";
        String userName = "user";
        String password = "password";
        try {
            Class.forName(driver);
            conn = DriverManager.getConnection(url, userName, password);
            System.out.println("Connected to the database!!! Getting table list...");
            DatabaseMetaData dbm = conn.getMetaData();
            rs = dbm.getTables(null, null, "%", new String[] { "TABLE" });
            while (rs.next()) { System.out.println(rs.getString("TABLE_NAME")); }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            conn.close();
            rs.close();
        }
    }
}

また、Mavenを使用する場合、pom.xmlにこれを追加します。

<dependency>
    <groupId>net.sourceforge.jtds</groupId>
    <artifactId>jtds</artifactId>
    <version>1.2.4</version>
</dependency>
39
acdcjunior

jdbc:jtds:sqlserver://x.x.x.x/database置換x.x.x.x SQL ServerマシンのIPまたはホスト名。

jdbc:jtds:sqlserver://MYPC/Blog;instance=SQLEXPRESS

または

jdbc:jtds:sqlserver://MYPC:1433/Blog;instance=SQLEXPRESS

接続オブジェクトに対して個別にではなく、接続文字列でもユーザー名とパスワードを設定する場合:

jdbc:jtds:sqlserver://MYPC/Blog;instance=SQLEXPRESS;user=foo;password=bar

(間違った情報を更新し、 インスタンス構文 への参照を追加しました)

7

暗闇の中でのショットですが、エラーメッセージの外観から、sqlserverインスタンスがポート1433で実行されていないか、何かがそのポートへのリクエストをブロックしているようです

4
Pratik Bhatt