Android程序虚拟机上能连接数据库,真机上无法连接。
对啦,就是把
虚拟机
当成实机来看待。不过,要
端口映射
,让外部能访问。就是你要把数据的端口映射出来,让实机上的服务器能够访问。就和两台实机间的
数据交换
一样。
主要是你能够访问虚拟机的数据库
数据库很多,但是安卓直接支持的数据库只有sqlite一种。如果要使用其它的非本地数据库,你得建立连接,采用webservice或http协议中转数据。
安卓访问mysql里的数据得:
1)先建立网络,使用WIFI局域网
2)在PC建立数据访问接口,编写http协议应用(方法非常多。
asp、php、jsp都有访问mysql的方法),还得关掉防火墙
3)编写安卓手机客户端连接设备的http
service
1、首先输入代码
public void SendByHttpClient(final String id, final String pw){
new Thread(new Runnable() {
@Override
public void run() {
try {
HttpClient httpclient=new DefaultHttpClient();
HttpPost httpPost=new HttpPost("http://web应用部署服务器上的IP地址:/HttpClientDemo/Login");//服务器地址,指向Servlet
List<NameValuePair> params=new ArrayList<NameValuePair>();//将id和pw装入list
paramsadd(new BasicNameValuePair("ID",id));
paramsadd(new BasicNameValuePair("PW",pw));
final UrlEncodedFormEntity entity=new UrlEncodedFormEntity(params,"utf-8");//以UTF-8格式发送
httpPostsetEntity(entity);
HttpResponse httpResponse= httpclientexecute(httpPost);
if(httpResponsegetStatusLine()getStatusCode()==200)//在200毫秒之内接收到返回值
2、然后再输入下方的代码:
{
HttpEntity entity=httpResponsegetEntity();
String response=EntityUtilstoString(entity1, "utf-8");//以UTF-8格式解析
Message message=new Message();
messagewhat=USER_LOGIN;
messageobj=response;
handlersendMessage(message);使用Message传递消息给线程
}
}
catch (Exception e) {
eprintStackTrace();
}
}
})start();
}3、最终,测试结果图,如下:
连接真机进行调试,首先手机连接电脑,打开手机的开发者选项勾中USB调试,确保手机已和电脑连接后,再点击运行(三角形的那个),会弹出此时该标签就是你手机的型号,点击OK即可运行到你手机上
0条评论