通过 ms jdbc 连接到 Azure SQL DB 的 Android 应用程序错误

Posted

技术标签:

【中文标题】通过 ms jdbc 连接到 Azure SQL DB 的 Android 应用程序错误【英文标题】:Android App error connecting to Azure SQL DB via ms jdbc 【发布时间】:2016-10-05 11:15:35 【问题描述】:

我是 android 应用程序开发的新手,我正在尝试使用本机 MS JDBC 驱动程序 (sqljdbc4.jar) 连接到 Azure SQL DB,但我不断收到以下错误:

“错误连接:驱动程序无法使用安全套接字层 (SSL) 加密建立与 SQL Server 的安全连接。错误:“套接字已关闭”。”

我可以使用与 squirrel 相同的连接字符串连接到数据库。

我使用的是 android studio 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 ??

【问题讨论】:

【参考方案1】:

似乎有很多 SO/MSDN 线程都有相同的问题。同时,一种解决方法是使用 jTDS Driver 而不是 MS SQL Server JDBC Driver。

请参考以下这些主题来解决您的问题。

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

希望对你有帮助。

【讨论】:

以上是关于通过 ms jdbc 连接到 Azure SQL DB 的 Android 应用程序错误的主要内容,如果未能解决你的问题,请参考以下文章

如果 SQL Server 是 MS 2012,则从 Pyodbc 连接到 SQL 14 Azure db

为啥我可以使用 tsql 而不是 pymssql 连接到 Azure MS SQL?

Google App Maker可以连接到Azure中的MS SqlServer数据库吗?

无法使用 JDBC 连接通过 SSH 隧道连接到 Azure DB

使用 Azure Active Directory 连接到 MSSQL 服务器的 JDBC

将 pentaho 9.1 连接到 Azure SQL Server