Java Android studio无法连接到Azure sql server中的数据库

Java Android studio无法连接到Azure sql server中的数据库,java,android,sql-server,azure,jtds,Java,Android,Sql Server,Azure,Jtds,我正在使用android studio开发一个应用程序,并使用Azure Sql Server托管我的数据库。问题是我能够连接到SQL server上的数据库,但它有一个错误,即在我的数据库中找不到Object 我发现它可能正在连接到我的主数据库,而不是我希望它连接到的数据库。有解决问题的办法吗 package com.example.lenovo.testing1; import android.annotation.SuppressLint; import android.os.Stric

我正在使用android studio开发一个应用程序,并使用Azure Sql Server托管我的数据库。问题是我能够连接到SQL server上的数据库,但它有一个错误,即在我的数据库中找不到Object

我发现它可能正在连接到我的主数据库,而不是我希望它连接到的数据库。有解决问题的办法吗

package com.example.lenovo.testing1;

import android.annotation.SuppressLint;
import android.os.StrictMode;
import android.util.Log;

import java.sql.*;

public class ConnectionClass {
    String hostName = "haozailai.database.windows.net";
    String dbName = "haozailai";
    String user = "username";
    String password = "password";

    @SuppressLint("NewApi")
    public Connection CONN() {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
        String ConnURL;
        Connection conn = null;

        try {

            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            String url = String.format("jdbc:jtds:sqlserver://haozailai.database.windows.net:1433;database=haozailai;user=username;password=password;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;");
            conn = DriverManager.getConnection(url);

        }catch (SQLException se)
        {
            Log.e("error here 1 : ", se.getMessage());
        }
        catch (ClassNotFoundException e)
        {
           Log.e("error here 2 : ", e.getMessage());
        }
        catch (Exception e)
        {
            Log.e("error here 3 : ", e.getMessage());
        }


        return conn;


    }
}

我试图通过JavaJDBC连接我的sqlserver,但没有重现您的问题

我可以成功连接到我的应用程序数据库

我的测试代码:

经过一些研究,我发现这是因为你的连接网址

您需要修改您的连接url:

jdbc:jtds:sqlserver://haozailai.database.windows.net:1433/<your application db name> ...
您可以参考以下页面了解更多详细信息

更新答案:

我对你的连接URL做了一点调整,可以正常连接到我的应用程序数据库

    try {

        String SQL = "select * from dbo.Student";

        Class.forName("net.sourceforge.jtds.jdbc.Driver");
        String url = String.format("jdbc:jtds:sqlserver://***.database.windows.net:1433/<your database name>;user=***;password=***;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;");
        conn = DriverManager.getConnection(url);

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

        while (rs.next()) {
            System.out.println(rs.getString("name"));
        }
        close();
    } catch (Exception e) {
        e.printStackTrace();
    }
请注意,删除数据库=***并在主机字符串后添加/

请参考以上代码并重试。如有任何问题,请告诉我


希望对您有所帮助。

我知道这个答案太晚了,但我发现这个视频非常有效:

问题是,你必须下载一个jtds jar,视频中的家伙说你可以从哪里获得它,而且,你需要在连接url中的sqlserver之前添加jtds,并编辑连接url中写入“databe”的方式,如下所示:
jdbc:jtds:sqlserver://serverName.database.windows.net:portNr:DatabaseName=dbName;用户=

我的连接URL直接从Azure门户获取。它链接到该服务器,但它链接到主数据库,主数据库来自System Databases文件夹,我认为它是MS SQL server 2017中的默认数据库,但不是我创建的数据库。@您是否尝试过我在回答中提到的url。在主机字符串后面添加/your db name是的,但它仍然不工作。它甚至无法从android Studioo连接到服务器哦是的。。很抱歉迟了答复。是的,它起作用了。感谢you@EnCiChu你可以在论坛上标记答案供其他人参考。谢谢。如果视频被删除,请在这里发布视频中发生的事情的摘要。
    try {

        String SQL = "select * from dbo.Student";

        Class.forName("net.sourceforge.jtds.jdbc.Driver");
        String url = String.format("jdbc:jtds:sqlserver://***.database.windows.net:1433/<your database name>;user=***;password=***;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;");
        conn = DriverManager.getConnection(url);

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

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