使用JDBC连接到Azure SQL数据库
我正在尝试连接到Azure上的SQL数据库。 我通过Android studio中的按钮调用这个类使用JDBC连接到Azure SQL数据库,sql,azure,jdbc,connection,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(); Strict
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
E/AndroidRuntime:致命异常:主
流程:com.example.nfcmedical,PID:16081
java.lang.AssertionError:numsgsrcvd:1应小于numsgsent:1
位于com.microsoft.sqlserver.jdbc.TDSReader.readPacket(IOBuffer.java:6601)
位于com.microsoft.sqlserver.jdbc.TDSReader.nextPacket(IOBuffer.java:6567)
在com.microsoft.sqlserver.jdbc.TDSReader.load(IOBuffer.java:6540)上
位于com.microsoft.sqlserver.jdbc.TDSReader.readBytes(IOBuffer.java:6851)
位于com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.readInternal(IOBuffer.java:859)
位于com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.read(IOBuffer.java:849)
位于com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.readInternal(IOBuffer.java:1019)
位于com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.read(IOBuffer.java:1009)
位于com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket(ConscryptEngineSocket.java:936)
位于com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket(ConscryptEngineSocket.java:900)
在com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.access$100(ConscryptEngineSocket.java:722)
在com.android.org.conscrypt.ConscryptEngineSocket.doHandshake上(ConscryptEngineSocket.java:238)
在com.android.org.conscrypt.ConscryptEngineSocket.startHandshake(ConscryptEngineSocket.java:217)上
位于com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1824)
位于com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2760)
位于com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2418)
位于com.microsoft.sqlserver.jdbc.SQLServerConnection.connectioninternal(SQLServerConnection.java:2265)
位于com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1291)
位于com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:881)
位于java.sql.DriverManager.getConnection(DriverManager.java:580)
位于java.sql.DriverManager.getConnection(DriverManager.java:236)
位于com.example.nfcmedical.Database$1.run(Database.java:23)
运行(Thread.java:923)
位于com.example.nfcmedical.Database.(Database.java:15)
位于com.example.nfcmedical.SignUp$2.onClick(SignUp.java:67)
在android.view.view.performClick上(view.java:7448)
在com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)上
在android.view.view.performClickInternal(view.java:7425)
在android.view.view.access$3600(view.java:810)
在android.view.view$PerformClick.run(view.java:28305)
位于android.os.Handler.handleCallback(Handler.java:938)
位于android.os.Handler.dispatchMessage(Handler.java:99)
位于android.os.Looper.loop(Looper.java:223)
位于android.app.ActivityThread.main(ActivityThread.java:7656)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
I/进程:发送信号。PID:16081信号:9
我在连接(DriverManager.getConnection)时遇到此错误
我试过谷歌搜索,但什么也没找到。我将重点放在错误的这一部分:
java.lang.AssertionError:numsgsrcvd:1应小于numsgsent:1