使用 JDBC 连接到 Azure SQL 数据库

时间:2021-04-23 18:29:20

标签: sql azure jdbc connection

我正在尝试连接到 Azure 上的 SQL 数据库。 我正在从 Android Studio 中的一个按钮调用这个类。

public class Database {

    //public Connection connection;

    public Database() {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
        thread.run();
    }

    Thread thread = new Thread(new Runnable() {
        @Override
        public void run(){
            try {
                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                Connection connection = DriverManager.getConnection("jdbc:sqlserver://ahcserver.database.windows.net:1433;database=ahc;user=ahc;password={********};encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;");
                Statement statement = connection.createStatement();
                ResultSet resultSet = statement.executeQuery("SELECT * FROM patient");
                System.out.println("Database Connection Success");
            } catch (SQLException | ClassNotFoundException throwables) {
                throwables.printStackTrace();
                System.out.println("Database Connection Failed");
            }
        }
    });

}

这是我得到的错误:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.nfcmedical, PID: 16081
    java.lang.AssertionError: numMsgsRcvd:1 should be less than numMsgsSent:1
        at com.microsoft.sqlserver.jdbc.TDSReader.readPacket(IOBuffer.java:6601)
        at com.microsoft.sqlserver.jdbc.TDSReader.nextPacket(IOBuffer.java:6567)
        at com.microsoft.sqlserver.jdbc.TDSReader.ensurePayload(IOBuffer.java:6540)
        at com.microsoft.sqlserver.jdbc.TDSReader.readBytes(IOBuffer.java:6851)
        at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.readInternal(IOBuffer.java:859)
        at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.read(IOBuffer.java:849)
        at com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.readInternal(IOBuffer.java:1019)
        at com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.read(IOBuffer.java:1009)
        at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket(ConscryptEngineSocket.java:936)
        at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket(ConscryptEngineSocket.java:900)
        at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.access$100(ConscryptEngineSocket.java:722)
        at com.android.org.conscrypt.ConscryptEngineSocket.doHandshake(ConscryptEngineSocket.java:238)
        at com.android.org.conscrypt.ConscryptEngineSocket.startHandshake(ConscryptEngineSocket.java:217)
        at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1824)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2760)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2418)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:2265)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1291)
        at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:881)
        at java.sql.DriverManager.getConnection(DriverManager.java:580)
        at java.sql.DriverManager.getConnection(DriverManager.java:236)
        at com.example.nfcmedical.Database$1.run(Database.java:23)
        at java.lang.Thread.run(Thread.java:923)
        at com.example.nfcmedical.Database.<init>(Database.java:15)
        at com.example.nfcmedical.SignUp$2.onClick(SignUp.java:67)
        at android.view.View.performClick(View.java:7448)
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)
        at android.view.View.performClickInternal(View.java:7425)
        at android.view.View.access$3600(View.java:810)
        at android.view.View$PerformClick.run(View.java:28305)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
I/Process: Sending signal. PID: 16081 SIG: 9

我在连接时收到此错误 (DriverManager.getConnection) 我试过谷歌搜索,但一无所获。我专注于错误的这一部分: java.lang.AssertionError: numMsgsRcvd:1 应该小于 numMsgsSent:1

0 个答案:

没有答案
相关问题