2016-10-05 325 views
0

我是Android應用程序開發的新手,我嘗試使用本地MS JDBC驅動程序(sqljdbc4.jar)連接到Azure SQL數據庫,並且繼續獲取以下錯誤:通過ms jdbc連接到Azure SQL數據庫的Android應用程序錯誤

「錯誤連接:驅動程序無法通過使用安全套接字層(SSL)加密與SQL Server建立安全連接錯誤:」套接字已關閉「。

雖然我能夠用相同的連接字符串連接到數據庫。

我使用Android 2.1.3工作室,我真的在我無計可施...... 這裏是代碼:

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;"); 

我甚至試圖在代碼上打開端口1433的插座:

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

但沒有佔上風,雖然我得到true打電話時

hverify.verify(); 

我是否缺少Android Studio的一些配置?

編輯:如果檢查套接字上啓用的協議:

socket.getEnabledProtocols(); 

的唯一協議,我回來是TLS1.0,TLS1.1和TLS1.2?

回答

0

似乎有許多SO/MSDN線程有相同的問題。同時,解決方法是使用jTDS驅動程序代替MS SQL Server JDBC驅動程序。

請參考下面的這些主題來解決您的問題。

  1. Sql Database connect Using the JDBC Driver with android
  2. https://social.msdn.microsoft.com/Forums/sqlserver/en-US/4799819a-27fd-4292-a3d8-f114207c20b2/using-the-jdbc-driver-with-android?forum=sqldataaccess
  3. https://blogs.msdn.microsoft.com/nickhodge/2010/01/25/jdbc-to-sql-azure/

希望它能幫助。

相關問題