[java] Помогите мне создать строку соединения jTDS


Answers

Действительно, действительно, действительно проверьте, включен ли протокол TCP / IP в вашем локальном экземпляре SQLEXPRESS.

Выполните следующие действия, чтобы убедиться:

  • Откройте « Sql Server Configuration Manager » в «Меню« Пуск »\ Программы \ Microsoft SQL Server 2012 \ Инструменты настройки \
  • Разверните «Конфигурация сети SQL Server»
  • Перейдите в «Протоколы для SQLEXPRESS»
  • Включить TCP / IP

Если у вас есть какие-либо проблемы, проверьте это сообщение в блоге для получения подробной информации, так как оно содержит скриншоты и многое другое.

Также проверьте, активирована и запущена служба Windows Server Browser :

  • Перейдите в Панель управления -> Администрирование -> Услуги
  • Откройте «Сервис SQL Server Browser» и включите его (сделайте его ручным или автоматическим, зависит от ваших потребностей)
  • Начни это.

Вот и все.

После того, как я установил новый локальный SQLExpress, все, что мне нужно было сделать, - включить TCP / IP и запустить службу браузера SQL Server.

Ниже кода, который я использую для проверки локального соединения SQLEXPRESS. Конечно, вы должны изменить IP, имя_базы базы данных и пользователь / пароль по мере необходимости .:

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>
Question

мое имя экземпляра сервера sql - это MYPC \ SQLEXPRESS, и я пытаюсь создать строку соединения 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



Выстрел в темноте, но из внешнего вида вашего сообщения об ошибке кажется, что либо экземпляр sqlserver не запущен на порту 1433, либо что-то блокирует запросы к этому порту






Related