Налаштування основної залежності для SQL Server


122

Я розробляю портлет, де я маю гібернаційний доступ до бази даних SQL Server. Я встановив для нього основні залежності і намагаюся знайти роз'єм SQL Server так само, як я знаю, що в MySql є.

І все-таки мій пошук у Google дає лише Mysql, якщо я шукаю роз'єм SQL Server. Яке значення правильної залежності від Maven ?


Відповіді:


213

Завантажте драйвер JAR за посиланням, яке надає Olaf, і додайте його до місцевого сховища Maven ;

mvn install:install-file -Dfile=sqljdbc4.jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar

Потім додайте його до свого проекту за допомогою;

<dependency>
  <groupId>com.microsoft.sqlserver</groupId>
  <artifactId>sqljdbc4</artifactId>
  <version>4.0</version>
</dependency>

13
У примітках до випуску версії, пов'язаної з відповіддю Олафа, зазначено, що це "Драйвер Microsoft JDBC 4.0 для SQL Server". Тому я б використав "-Dversion = 4.0" у встановленні mvn.
Джордж Армхолд

2
Я зіткнувся з проблемою: "в цьому каталозі немає POM". Рішення для цього можна знайти тут: stackoverflow.com/questions/16348459/…
Alan B. Dee

4
sourceforge jtds - це ваша відповідь
Junchen Лю

1
Завантажити банку можна тут: java2s.com/Code/Jar/s/Downloadsqljdbc420jar.htm
İsmail Yavuz

Чи завантаження та додавання його до місцевого ремонту Maven не призведе до тісної взаємодії з машиною розвитку, на якій ви будуєте додаток? Я маю на увазі, якщо той самий проект намагатимуться побудувати на іншій машині, він не знайде банку в місцевому репо. Чи не було б добре додати його до проекту, щоб його було доступно на VCS?
Обаїд Марооф

69

Відповідь за "новий" та "класний" Microsoft.

Так, драйвер SQL Server тепер під ліцензією MIT на

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre8</version>
</dependency>

Відповідь для "старого" Microsoft:

Для мого використання (тестування інтеграції) було достатньо використовувати системний обсяг для залежності драйвера JDBC як такої:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>sqljdbc4</artifactId>
    <version>3.0</version>
    <scope>system</scope>
    <systemPath>${basedir}/lib/sqljdbc4.jar</systemPath>
    <optional>true</optional>
</dependency>

Таким чином, я міг би поставити драйвер JDBC в локальний контроль версій. Не потрібно, щоб кожен розробник вручну налаштовував речі у своїх сховищах.

Я взяв натхнення від цієї відповіді на інше запитання про переповнення стека, і я також про це розповів тут .


Якщо це можливо, я думаю, що краще завантажити JAR у місцевий сховище Maven (Nexus)
mcoolive

@mcoolive: Це, безумовно, краще, в основному. Але іноді просто простіше (і все-таки доречно) виконати швидку і брудну роботу.
Лукас Едер

Ця відповідь застаріла порівняно з оновленою відповіддю Тузері.
Благословенний гек

1
@BlessedGeek: Ну, я оновив свою відповідь ще до Touzery. Насправді відповідь Тузері є більш застарілою, оскільки вона все ще посилається на бібліотеку з sourceforge. sourceforge !!
Лукас Едер

1
@MikhailFedorov: Моє рішення працювало на мене. Не соромтеся додати власну відповідь (або навіть пару питань / відповідей), яка показує, як вирішити це, було б чудово для громади.
Лукас Едер

16

Також є альтернатива: ви можете використовувати драйвер jTDS з відкритим кодом для MS-SQL Server, який сумісний, хоча не створений Microsoft. Для цього драйвера є артефакт Maven, який ви можете використовувати:

http://jtds.sourceforge.net/

З http://mvnrepository.com/artifact/net.sourceforge.jtds/jtds :

<dependency>
    <groupId>net.sourceforge.jtds</groupId>
    <artifactId>jtds</artifactId>
    <version>1.3.1</version>
</dependency>

ОНОВЛЕННЯ листопада 2016, Microsoft тепер опублікувала свій драйвер MSSQL JDBC на github, а тепер він доступний і в maven:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre8</version>
</dependency>

Для Java 1.6: я здогадуюсь, що вищі версії призначені для 1.7 .. <dependency> <groupId> net.sourceforge.jtds </groupId> <artifactId> jtds </artifactId> <version> 1.2.4 </version> </ залежність>
Roshan Khandelwal

2
зауважте, що не було випусків JTDS з 2013 року, тому це може бути поганою порадою в даний час ...
Emmanuel Touzery

У драйвера jtds виникли проблеми з ssl в java 8 (виправлено, але не випущено), тому ми перейшли на sqljdbc4
rychu

9

Я вважаю, ви шукаєте драйвер JDBC Microsoft SQL Server: http://msdn.microsoft.com/en-us/sqlserver/aa937724


Так, це один. Я хотів би завантажити його через Maven, тому це насправді не було відповіддю на моє запитання. Отже, спершу даю, що отримає мій галочку за його / її відповідь!
mico

3
Схоже, існують деякі розбіжності між людьми Maven та Microsoft щодо ліцензування та перерозподілу драйвера JDBC: blogs.msdn.com/b/jdbcteam/archive/2010/03/02/…
Олаф

3

Будьте уважні до вищевказаних відповідей. sqljdbc4.jar не розповсюджується згідно з публічною ліцензією, тому важко включити його в банку для виконання та розповсюдження. Дивіться мою відповідь нижче для отримання більш детальної інформації та набагато кращого рішення. Ваше життя стане набагато простішим, як і моє, коли я знайшов цю відповідь.

https://stackoverflow.com/a/30111956/3368958


2

Навіть після встановлення баночки sqlserver мій мавен намагався отримати залежність із сховища Maven. Тоді я, за умови моєї помпової сховища моєї локальної машини, і вона працює нормально після цього ... могла б комусь допомогти.

    <repository>
        <id>local</id>
        <name>local</name>
        <url>file://C:/Users/mywindows/.m2/repository</url>
    </repository>


1

Схоже, Microsoft опублікувала кілька своїх драйверів для Maven central:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre8</version>
</dependency>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.