本人是菜鸟,才学android没有几天,求大神解答下问题:
我写了一段android连接mysql数据库的代码,日志显示:caused by: android.os.NetworkOnMainThreadException,另外显示有两处错误(错误行代码有注释)
package com.example.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class DBUtil {
public static Connection getConnection()
{
Connection con=null;
try
{
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost/phpmyadmin/sql.php?db=test&table=test_table&server=1&target=&token=8d4f159026cbb703acf36034c2082a64#PMAURL-2:db_structure.php?db=test&table=&server=1&target=&token=c5d26db979b50cc6775e3dac84699d95","root",""); //这一行有错
}
catch(Exception e)
{
e.printStackTrace();
}
return con;
}
public static String selectPwd(String ID)
{
String result=null;
try
{
Connection con=getConnection();
Statement st=con.createStatement(); //这一行有错
String sql="select password from test_table where ID='"+ID+"'";
ResultSet rs=st.executeQuery(sql);
if(rs.next())
{
result=rs.getString(1);
}
rs.close();
st.close();
con.close();
}
catch(Exception e)
{
e.printStackTrace();
}
return result;
}
}
目测没有运行在android上的mysql数据库吧,所以我认为你是用远程连接来连接的,并且从报错:caused by: android.os.NetworkOnMainThreadException明显是在主线程中发起了网络请求。现在一般手机是不允许在主线程中进行网络请求的,所以,解决方法就是将连接数据库的相关操作放到其他线程咯!!
检查你数据库的连接字符串、账号和配置。
前面就错了,con.createStatement();因为con没有打开所以跟着错。
链接数据库有两个主要步骤:1、链接数据库,2、加载
你可以看看这篇博文,但愿对你有帮助
http://blog.csdn.net/lee_my_/article/details/43022935
con=DriverManager.getConnection("jdbc:mysql://localhost/phpmyadmin/sql.php?db=test&table=test_table&server=1&target=&token=8d4f159026cbb703acf36034c2082a64#PMAURL-2:db_structure.php?db=test&table=&server=1&target=&token=c5d26db979b50cc6775e3dac84699d95","root","");
不知道你的数据库是怎么配置的,看你这路径貌似是本地的数据库.
你可以这样写
private static final String Driver="com.mysql.jdbc.Driver";
private static final String UR="jdbc:mysql://localhost/数据库名字";
private static final String USER="root";
private static final String PW="";
Class.forName(Driver);
DriverManager.getConnection(UR,USER , PW);
注意要讲JDBC的jar包复制到你的lib目录下....