本人在写一个app,需要链接数据库取出数据,放在list里面,在链接数据库的时候,自己写了一个测试类,可以在控制台输出数据库的信息,但是在activity对应的后台文件中,用数据库的代码就报connection和statement的错误
。(测试类用本机IP地址并不能访问到数据库,用的是localhost,排除本地链接问题)```
public class testActivity extends AppCompatActivity ```
```{
```    private static final int CHANGE_TEXT=1;
    private static TextView textView;
    private Handler handler=new Handler(){
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        Button button = findViewById(R.id.button4);
        textView = findViewById(R.id.textView4);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                switch (v.getId()) {
                    case R.id.button4:
                        //开启一个子线程
                        new Thread(new Runnable() {
                            @Override
                            public void run() {
                                try {
                                    Class.forName("com.mysql.jdbc.Driver");
                                    Connection cn= DriverManager.getConnection("jdbc:mysql://*********/test","root","123456");
                                    String sql="select * from xy";
                                    Statement st=(Statement)cn.createStatement();
                                    ResultSet rs=st.executeQuery(sql);
                                    while(rs.next()){
                                        int mybook=rs.getInt(1);
                                        Log.i("testActivity", String.valueOf(mybook));
System.out.println(mybook);
                                    }
                                    cn.close();
                                    st.close();
                                    rs.close();
                                } catch (ClassNotFoundException e) {
                                    e.printStackTrace();
                                } catch (SQLException e) {
                                    e.printStackTrace();
                                }
                            }
                        }).start();
                        break;
                    default:
                        break;
                }
            }
        });
    }
}

解决方案 »

  1.   


    看上图中的错误信息,很明显就是访问不到指定地址的数据库。测试类用本机IP地址并不能访问到数据库,用的是localhost,排除本地链接问题
    结合你的这个说法,localhost可以访问到,但是用本机IP访问不到,最大的可能就是防火墙,你把防火墙关了试试。建议两点
    1、关闭防火墙
    2、先保证你的测试类能够用IP正常访问,之后再去测试app
      

  2.   

    我把测试类的IP访问到了,将本地的IP设置可以远程访问,但是app里面还是会报错
      

  3.   

    你是不是在虚拟机中运行App,如果是的话,把192.168.137.1,改成10.0.2.2试试,再不行改成127.0.0.1
      

  4.   

    数据库是布署在本地pc:192.168.137.1上?
    app运行的avd或真机,能ping通192.168.137.1吗,先得确认认两者之间的网络是通的。
      

  5.   

    127.0.0.1可以在测试类访问,但是10.0.2.2不行,而且两个地址在app里面都不行,报错依然是链接超时;会不会是代码问题?
    数据库确实部署在本机上,测试类通过本机的IP访问数据库,有没有其他测试两者网络的方法哇?