2016-10-05 9 views
0

Android 앱 개발에 익숙하며 원시 MS JDBC 드라이버 (sqljdbc4.jar)로 Azure SQL DB에 연결하려고합니다. 다음 오류 :ms jdbc를 통해 Azure SQL DB에 연결하는 중 Android 앱 오류가 발생했습니다.

"오류 연결 : 드라이버가 SSL (Secure Sockets Layer) 암호화를 사용하여 SQL Server에 대한 보안 연결을 설정할 수 없습니다."오류 : "소켓이 닫혔습니다."

다람쥐와 동일한 연결 고리를 사용하여 DB에 연결할 수 있습니다. 심지어 코드에서 포트 1433에 소켓을 열려고

DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver()); 
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
String username = "<>"; 
String password = "<>"; 
java.sql.Connection DbConn = DriverManager.getConnection("jdbc:sqlserver://<myserver>:1433;databaseName=thumbsupp;user=" + username + ";password=" + password + ";encrypt=true;trustServerCertificate=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;"); 

:

내가 안드로이드 스튜디오 2.1.3를 사용하고 난 내 지혜의 끝에서 정말입니다 ... 여기 코드입니다 :

SocketFactory sf = SSLSocketFactory.getDefault(); 
SSLSocket socket = (SSLSocket) sf.createSocket("<myserver>", 1433); 
HostnameVerifier hverify = HttpsURLConnection.getDefaultHostnameVerifier(); 
SSLSession ssoc = socket.getSession(); 

하지만에 내가 true를 얻을 수 있지만 우선

호출

hverify.verify(); 

Android Studio에서 일부 구성이 누락 되었습니까?

편집 : A는 소켓에 사용할 수있는 프로토콜을 확인하는 경우 : 내가 TLS1.0, TLS1.1과 TLS1.2이 돌아

socket.getEnabledProtocols(); 

유일한 프로토콜 ??

답변

0

동일한 문제가있는 많은 SO/MSDN 스레드가있는 것으로 보입니다. 한편, 임시 해결책은 MS SQL Server JDBC 드라이버 대신 jTDS 드라이버를 사용하는 것입니다.

문제를 해결하려면 아래의 스레드를 참조하십시오. https://blogs.msdn.microsoft.com/nickhodge/2010/01/25/jdbc-to-sql-azure/

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/4799819a-27fd-4292-a3d8-f114207c20b2/using-the-jdbc-driver-with-android?forum=sqldataaccess

  • Sql Database connect Using the JDBC Driver with android
    1. 는 도움이되기를 바랍니다.