gpt4 book ai didi

java - 连接MySQL Eclipse错误

转载 作者:行者123 更新时间:2023-11-30 00:08:44 24 4
gpt4 key购买 nike

我正在尝试将我的 android 项目连接到 mysql 中的数据库,这是我的代码:

package br.com.savetime;

导入java.sql.*;

公共(public)课 CriarConexao {

private static Connection con = null;

public static Connection abrirBanco(){
Connection con;
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/savetime", "root", "root");
return con;

}
catch(ClassNotFoundException cnfe){
System.out.println("driver nao encontrado: " + cnfe.getMessage());
return null;
}
catch(SQLException sql){
System.out.println("SQLException: " + sql.getMessage());
return null;
}
catch(Exception e){
System.out.println(e.getMessage());
return null;
}
}

public static void fecharBDcon(){
try{
con.close();
}
catch(Exception e){
System.out.println("erro ao fechar o banco" + e.getMessage());
}
}

}

这是错误:

06-18 02:32:57.925: I/System.out(1044): SQLException: Communications link failure due to underlying exception: 
06-18 02:32:57.925: I/System.out(1044): ** BEGIN NESTED EXCEPTION **
06-18 02:32:57.925: I/System.out(1044): android.os.NetworkOnMainThreadException
06-18 02:32:57.925: I/System.out(1044): STACKTRACE:
06-18 02:32:57.935: I/System.out(1044): android.os.NetworkOnMainThreadException
06-18 02:32:57.935: I/System.out(1044): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
06-18 02:32:57.935: I/System.out(1044): at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
06-18 02:32:57.935: I/System.out(1044): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
06-18 02:32:57.935: I/System.out(1044): at java.net.InetAddress.getAllByName(InetAddress.java:214)
06-18 02:32:57.935: I/System.out(1044): at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:133)
06-18 02:32:57.935: I/System.out(1044): at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:280)
06-18 02:32:57.935: I/System.out(1044): at com.mysql.jdbc.Connection.createNewIO(Connection.java:1765)
06-18 02:32:57.935: I/System.out(1044): at com.mysql.jdbc.Connection.<init>(Connection.java:430)
06-18 02:32:57.935: I/System.out(1044): at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:268)

我没有连接到互联网,所以我不明白为什么会出现此错误,您能帮我吗?

最佳答案

您正在尝试打开与应用程序以外的数据库的连接。您正在建立的连接是通过网络进行的,Android(Honeycomb 和转发)不允许您在 UI 线程上进行网络调用。使用AsyncTask或其他一些结构来在主(UI)线程之外执行网络操作。

[编辑]

以下是如何使用 AsyncTask 连接 MySQL 的示例:

private class Connect extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String response = "";

try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url, user, pass);
// System.out.println("Database connection success");

String result = "Database connection success\n";
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select * from users");
ResultSetMetaData rsmd = rs.getMetaData();

while(rs.next()) {
result += rsmd.getColumnName(1) + ": " + rs.getInt(1) + "\n";
result += rsmd.getColumnName(2) + ": " + rs.getString(2) + "\n";
result += rsmd.getColumnName(3) + ": " + rs.getString(3) + "\n";
}
tv.setText(result);
}
catch(Exception e) {
e.printStackTrace();
tv.setText(e.toString());
}
return response;


}

附注代码取自here .

关于java - 连接MySQL Eclipse错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24276366/

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