2016-10-05 1 views
0

私はAndroidアプリ開発に慣れていません。ネイティブMS JDBCドライバ(sqljdbc4.jar)を使用してAzure SQL DBに接続しようとしています。次のエラーが発生しました:ms jdbc経由でAzure SQL DBに接続中にアプリケーションエラーが発生しました

"エラー接続:ドライバがSecure Sockets Layer(SSL)暗号化を使用して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;"); 

iはアンドロイドスタジオ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からいくつかの設定が欠けていますか?

編集:ソケット上で有効なプロトコルを確認した場合:私はTLS1.0、TLS1.1及びTLS1.2である取り戻す

socket.getEnabledProtocols(); 

プロトコルのみ?

答えて

0

同じ問題がある多くのSO/MSDNスレッドがあるようです。一方、回避策は、MS SQL Server JDBCドライバの代わりにjTDSドライバを使用することです。

問題を解決するには、以下のスレッドを参照してください。

  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/

それがお役に立てば幸いです。

関連する問題