gpt4 book ai didi

java - 无法通过android studio连接azure数据库

转载 作者:行者123 更新时间:2023-12-02 01:59:50 25 4
gpt4 key购买 nike

我在 Azure SQl 中创建了一个名为 USERS 的数据库,并且我想访问名为“FullName”的列加载的jar:sqljtdc4.jar我通过互联网搜索并阅读文档,最终实现了这个,但出现了这个未知错误

我的尝试:

String hostName = "ABC.database.windows.net"; 
String dbName = "myfirst";
String user = "username";
String password = "abcde";

String url = String.format("jdbc:sqlserver://%s:1433;database=%s;user=%s;password=%s;encrypt=true;"
+ "hostNameInCertificate=*.database.windows.net;loginTimeout=30;", hostName, dbName, user, password);

//I have tried this replacing database with databaseName/Database/DatabaseName

Connection connection = null;

try{Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
connection = DriverManager.getConnection(url);
String SQL = "select * from dbo.USERS";


try (Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(SQL)) {

// Print results from select statement
while (resultSet.next())
{
Toast.makeText(this,resultSet.getString("FullName"), Toast.LENGTH_SHORT).show();
}
connection.close();
}
}
catch (Exception e) {
e.printStackTrace();
}

但出现此错误:

 W/System.err:     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1513)
2019-08-06 21:27:52.400 15125-15125/com.abc.abc W/System.err: at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:117)
2019-08-06 21:27:52.400 15125-15125/com.abc.abc W/System.err: at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:105)
2019-08-06 21:27:52.401 15125-15125/com.abc.abc W/System.err: at java.net.InetAddress.getByName(InetAddress.java:1108)
2019-08-06 21:27:52.401 15125-15125/com.abc.abc W/System.err: at java.net.InetSocketAddress.<init>(InetSocketAddress.java:235)
2019-08-06 21:27:52.401 15125-15125/com.abc.abc W/System.err: at com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:356)
2019-08-06 21:27:52.402 15125-15125/com.abc.abc W/System.err: at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1034)
2019-08-06 21:27:52.402 15125-15125/com.abc.abc W/System.err: at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:833)
2019-08-06 21:27:52.403 15125-15125/com.abc.abc W/System.err: at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:716)
2019-08-06 21:27:52.403 15125-15125/com.abc.abc W/System.err: at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:841)
2019-08-06 21:27:52.404 15125-15125/com.abc.abc W/System.err: at java.sql.DriverManager.getConnection(DriverManager.java:569)
2019-08-06 21:27:52.404 15125-15125/com.abc.abc W/System.err: at java.sql.DriverManager.getConnection(DriverManager.java:237)

最佳答案

这是Android应用程序的一个典型问题,你不能直接在主线程中执行网络操作。

下面有两个SO线程与您的问题相同,您可以引用它们来解决它。

  1. Error StrictMode$AndroidBlockGuardPolicy.onNetwork
  2. How do I fix android.os.NetworkOnMainThreadException?

一种方法是添加这两行,如下所示。

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

或者创建一个新线程来运行其中的代码。

希望有帮助。

关于java - 无法通过android studio连接azure数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57380176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com