java jdbc:jtds:sqlserver - Помогите мне создать строку соединения jTDS





net sourceforge (6)


Как указано в часто задаваемых вопросах jTDS , формат URL для jTDS:

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

Таким образом, для подключения к базе данных под названием «Блог», размещенной на MS SQL Server, запущенной на MYPC , вы можете получить что-то вроде этого:

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

Или, если вы предпочитаете использовать getConnection(url, "sa", "s3cr3t") :

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

РЕДАКТИРОВАТЬ. Что касается Connection refused , дважды проверьте, что вы используете SQL Server на порту 1433, что служба запущена и что у вас нет брандмауэра, блокирующего входящие соединения.

мое имя экземпляра сервера 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



jdbc:jtds:sqlserver://xxxx/database заменяющая xxxx IP или хостом вашего компьютера SQL Server.

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

(Обновлена ​​моя некорректная информация и добавлена ​​ссылка на синтаксис экземпляра )




Действительно, действительно, действительно проверьте, включен ли протокол 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>



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




SQLServer запускает экземпляр по умолчанию через порт 1433. Если вы укажете порт как порт 1433, SQLServer будет искать только экземпляр по умолчанию. Имя экземпляра по умолчанию было создано при настройке, и обычно это SQLEXPRESSxxx_xx_ENU .

Имя экземпляра также совпадает с именем папки, созданной в Program Files -> Microsoft SQL Server. Поэтому, если вы посмотрите там и увидите одну папку с именем SQLEXPRESSxxx_xx_ENU, это экземпляр по умолчанию.

Папки с именем MSSQL12.myInstanceName (для SQLServer 2012) называются экземплярами SQL Server и не доступны через порт 1433.

Поэтому, если ваша программа обращается к экземпляру по умолчанию в базе данных, укажите порт 1433, и вам может не потребоваться указать имя экземпляра.

Если ваша программа обращается к именованному экземпляру (а не экземпляру по умолчанию) в базе данных, НЕ указывайте порт, но вы должны указать имя экземпляра.

Надеюсь, это прояснит некоторую путаницу, исходящую из вышеперечисленных ошибок.




Вы должны иметь возможность использовать свойство «эллипсиса» текстового вида:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/text_mytext"
    android:ellipsize="end"
    android:maxLines="1"
/>

Вам также может потребоваться применить значения гравитации к макету; Я иногда видел «автоматическое растяжение» без них.





java jdbc connection-string jtds