当前位置: 首页 > 知识库问答 >
问题:

使用java将android studio连接到Azure sql时出现问题

屈健柏
2023-03-14

我正在尝试用android studio连接到我的Azure sql云数据库。运行代码时,我遇到了以下错误:“由于客户端TLS版本低于服务器允许的最低TLS版本,登录失败。”我已经尝试将azure的lts设置为1.0版本。

公共类MainActivity扩展AppCompatActivity {

public static final String url = "jdbc:jtds:sqlserver://***.database.windows.net:1433;DatabaseName=***;user=***;password=***;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;";
public static final String name = "net.sourceforge.jtds.jdbc.Driver";

public static Connection conn = null;
public static PreparedStatement pst = null;
public static Statement stmt = null;
public static ResultSet rs = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);

    final Button button = findViewById(R.id.button1);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            try {
                String SQL = "select * from dbo.Person";
                Class.forName(name);
                conn = DriverManager.getConnection(url);

                stmt = conn.createStatement();
                rs = stmt.executeQuery(SQL);

                while (rs.next()) {
                    System.out.println(rs.getString("FirstName"));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

}

共有1个答案

关冠宇
2023-03-14

发生此错误是由于Azure End上数据库和连接的防火墙中的TLS版本设置不匹配,如图所示:

以下屏幕截图是错误配置的示例:

Azure 被要求使用大于 TLS 1.2 的 TLS 版本,但是,连接完全使用 TLS1.2。

这将导致不匹配。

a)防火墙(选择的版本大于TLS 1.2):

b)连接(在选择为TLS1.2的连接级别,与上述设置不匹配):

因此,如果您在连接级别选择TLS1.2,Azure上的设置应该选择为高于TLS 1.1(即

要解决此问题,请确保选择兼容的TLS版本,以确保安全代理可以成功连接到数据库。

此外,确保为此连接选择的加密方法是SSL或任何其他基于SSL的选项。

这是因为如果加密方法设置为“无”,则在运行时不会对任务应用TLS设置,从而导致任务在运行时失败,并显示相同的错误消息

 类似资料:
  • Oracle JKD 8和IBM JRE 7(出于测试目的,我为它们各配置了一个客户机) com.ibm.mq.allclient-9.1.0.0.jar javax.jms-api-2.0.1.jarspring-jms-4.3.7.release.jar spring-jms-4.3.7.release.jar MQ是请求/应答类型。 我已经设置了正确的证书和所有MQ属性,但由于某种原因,连接

  • 问题内容: 我正在尝试使用基本上通过以下方式构建的Java客户端使用SSL消耗IBM MQ(版本8.0.0.8): Oracle JKD 8和IBM JRE 7(出于测试目的,我每个都有一个客户端) com.ibm.mq.allclient-9.1.0.0.jar javax.jms-api-2.0.1.jarspring-jms-4.3.7.RELEASE.jar spring-jms-4.3.

  • 我有一个spring-boot项目,在其中我尝试连接到我刚刚创建的azure sql数据库。我第一次尝试它的时候是在com.microsoft.sqlserver groupId下使用sqljdbc4,每次尝试启动它的时候我都有安全错误,搜索了一下我发现它是用6+版本修复的。然后我安装了它并设置了依赖项 现在我不再有这个错误了,而是有了org.springframework.beans.facto

  • 问题内容: 我试图在使用selenium和phantomjs webdriver的linux服务器上运行python脚本;但是,我不断收到以下错误消息: 这是一个失败并生成此错误的简单测试脚本: 在路径上调用文件,返回: 有谁知道如何启动并运行该脚本?我已阅读了似乎类似的stackoverflow问题,并尝试应用建议的解决方案,例如通过npm重新安装幻像并使用sudo执行脚本,但是没有运气。如果我

  • 我有一个使用Struts1.3、Hibernate3和Spring Security开发的web应用程序。由于MySQL在此时间之后关闭了连接,该应用程序在8小时后就停止了运行。然后我从几个帖子中收集信息,使它保持很长时间,现在差不多是20-24小时。有没有人能帮我把这东西弄好。 摘要 Iam在不活动20小时后无法登录。连接被MySQL关闭。 多谢了。 C3p0日志 INFO AbstractPo

  • 我知道以前也有人问过类似的问题,但没有一个对我有帮助。 基本上,我需要=%AppData%+“当前EXE名称” 但问题在于不同的字符串类型和字符串拼接 简化代码:- 编译器命令:- 编译器错误:-