PILNE Java 8 + MSSQL Server 2017

PILNE Java 8 + MSSQL Server 2017
CA
  • Rejestracja:około 9 lat
  • Ostatnio:ponad rok
  • Postów:80
0

Witam.

Próbuję połączyć się z bazą danych MSSQL 2017 ale nie daje rady ... nerwowo.
Na pn muszę skończyć projekt. Używałem MySQL niestety musiałem się przesiąść na Microsoft. Przymus.
Próbowałem sposobów przedstawionych na Microsoft no i kilku innych ale nie dało rady. Używałem kiedyś jakiejś starszej wersji i z bólem przeszło. Tu niestety topór w plecy.
Sprawdzałem drivery 8.2, 8.4 i nie dało rady.
Wyrzuca błąd, że użytkownik nie istnieje. A istnieje. Sposoby przedstawione na necie u mnie nie działają.
Miał może ktoś kontakt z połączeniem Java 8 + JDBC Driver 8.2 lub 8.4 + Microsoft SQL 2017?
Proszę o jakiś sprawdzony przykład. Będę niesamowicie wdzięczny.

Pozdrawiam.

Marcin.Miga
  • Rejestracja:prawie 17 lat
  • Ostatnio:około 8 godzin
  • Postów:2792
7

Masz błąd w 3 linii kodu.

BraVolt
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 4 lata
  • Lokalizacja:Warszawa
  • Postów:2918
0

"Kiedy wiedzieć czy zacząć nauke Springa? bo w czystej Javie to nic ciekawego nie zrobie chyba"
Ein Volk, ein Reich, ein Kwa-Kwa ***** ***
CA
  • Rejestracja:około 9 lat
  • Ostatnio:ponad rok
  • Postów:80
0
CA
  • Rejestracja:około 9 lat
  • Ostatnio:ponad rok
  • Postów:80
0

Patrzyłem. No ale na tym przykładzie

Kopiuj
import com.microsoft.sqlserver.jdbc.SQLServerDataSource;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ConnectURL {
    public static void main(String[] args) throws ClassNotFoundException {
        SQLServerDataSource ds = new SQLServerDataSource();
        ds.setUser("Owd");
        ds.setPassword("owd");
        ds.setServerName("localhost");
        ds.setPortNumber(1433);
        ds.setDatabaseName("owd");

        try (Connection con = ds.getConnection();
                CallableStatement cstmt = con.prepareCall("{call dbo.uspGetEmployeeManagers(?)}");) {
            // Execute a stored procedure that returns some data.
            cstmt.setInt(1, 50);
            ResultSet rs = cstmt.executeQuery();

            // Iterate through the data in the result set and display it.
            while (rs.next()) {
                System.out.println("EMPLOYEE: " + rs.getString("LastName") + ", " + rs.getString("FirstName"));
                System.out.println("MANAGER: " + rs.getString("ManagerLastName") + ", " + rs.getString("ManagerFirstName"));
                System.out.println();
            }
        }
        // Handle any errors that may have occurred.
        catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

Errory :)

Kopiuj
gru 04, 2020 10:54:27 PM com.microsoft.sqlserver.jdbc.TDSChannel enableSSL
WARNING: TLSv1 was negotiated. Please update server and client to use TLSv1.2 at minimum.
com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'Owd'. ClientConnectionId:622b194e-9841-4ec5-92a9-0eb85a18d935
	at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:262)
	at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:283)
	at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:129)
	at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:37)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:5233)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3988)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:85)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3932)
	at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7375)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:3206)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2713)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2362)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:2213)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1276)
	at com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnectionInternal(SQLServerDataSource.java:1222)
	at com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnection(SQLServerDataSource.java:85)
	at ConnectURL.main(ConnectURL.java:22)
edytowany 1x, ostatnio: caprio
lgtk
  • Rejestracja:ponad 14 lat
  • Ostatnio:7 dni
1

A czytałeś treść wyjątku?

CA
  • Rejestracja:około 9 lat
  • Ostatnio:ponad rok
  • Postów:80
0

Wiem. Autoryzacja dwuetapowa była wyłączona.
Dałem inny przykład

Kopiuj
    public static void main(String[] args) throws ClassNotFoundException {
        String connectionUrl =
                "jdbc:sqlserver://yourserver.database.windows.net:1433;"
                        + "database=owd;"
                        + "user=Owd;"
                        + "password=owd;"
                        + "encrypt=true;"
                        + "trustServerCertificate=false;"
                        + "loginTimeout=30;";

        try (Connection conn = DriverManager.getConnection(connectionUrl);) {
            Statement stmt = conn.createStatement();
            String SQL = "SELECT  * FROM Stat_wyk";
            ResultSet rs = stmt.executeQuery(SQL);

            // Iterate through the data in the result set and display it.
            while (rs.next()) {
                System.out.println("+++"+rs.getString("status"));
            }
        }
        // Handle any errors that may have occurred.
        catch (SQLException e) {
            e.printStackTrace();
        }
    }

Error

Kopiuj
	at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:234)
	at com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:285)
	at com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2462)
	at com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:668)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2695)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2362)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:2213)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1276)
	at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:861)
	at java.sql.DriverManager.getConnection(DriverManager.java:664)
	at java.sql.DriverManager.getConnection(DriverManager.java:270)
	at ConnectURL.main(ConnectURL.java:24)
AK
jak nie wiesz, co jest istotną treścią wyjątku, to jeszcze nie zaczałes świadomie programować.
AK
PS. dowolny driver MS SQL z dowolną Javą i dowolną wersją serwera mi działa od 15 lat do dziś - musiałeś się specjalnie postarać. Nie bierz zbyt osobiście, ale nie wierzę w świadome używanie MySQL-a rzekomo będą pasmem sukcesów.
vpiotr
Probowales zmienic adres serwera?
CA
  • Rejestracja:około 9 lat
  • Ostatnio:ponad rok
  • Postów:80
1

Dzięki Panowie za dobry trop. Problem leżał w konfiguracji SSL 2 i tls 1.2 trzeba było użyć programu crypto. Niezbędne było również zamknięcie portów TCP mssql i otwarcie w sqlexpress. Konfigurator SQL express. Driver i reszta były ok. A programista że mnie jak z koziej du.. trąba. Ale ważne że chcę się uczyć 😁

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.