java连接MySQL Eclipse错误
我正在尝试将我的安卓项目连接到mysql中的数据库,这是我的代码:
package br.com.savetime;
导入java。sql.*
公共级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): 安卓.os.NetworkOnMainThreadException
06-18 02:32:57.925: I/System.out(1044): STACKTRACE:
06-18 02:32:57.935: I/System.out(1044): 安卓.os.NetworkOnMainThreadException
06-18 02:32:57.935: I/System.out(1044): at 安卓.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)
我没有上网,所以我不明白为什么会发生这个错误,你能帮我吗
# 1 楼答案
首先是在android localhost中,如果您试图从emulator连接到系统上的mysql,请使用10.0.0.2IP连接到系统,这是指它自己的环回地址。对于设备,您必须使用usb连接,并且设备和系统需要位于同一网络上。 其次,使用异步任务进行通信,因为这将是网络调用
# 2 楼答案
您试图打开与应用程序不在本地的数据库的连接。您正在通过网络进行连接,Android(蜂巢和转发)不允许您在UI线程上进行网络调用。使用AsyncTask或其他构造在主(UI)线程之外执行网络操作
[编辑]
下面是一个关于如何使用AsyncTask连接到MySQL的示例:
另外,代码取自here