本人在写一个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;
}
}
});
}
}
。(测试类用本机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;
}
}
});
}
}
看上图中的错误信息,很明显就是访问不到指定地址的数据库。测试类用本机IP地址并不能访问到数据库,用的是localhost,排除本地链接问题
结合你的这个说法,localhost可以访问到,但是用本机IP访问不到,最大的可能就是防火墙,你把防火墙关了试试。建议两点
1、关闭防火墙
2、先保证你的测试类能够用IP正常访问,之后再去测试app
app运行的avd或真机,能ping通192.168.137.1吗,先得确认认两者之间的网络是通的。
数据库确实部署在本机上,测试类通过本机的IP访问数据库,有没有其他测试两者网络的方法哇?