我正在尝试连接到 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