关于通过JDBC访问本地MySql数据库的一篇文章http://blog.csdn.net/leelit/article/details/41044187,昨天学完JDBC访问本地数据库后就想,怎样可以远程访问数据库,真正使其成为一个服务器。后面又联想起自己之间做的一个单机版外卖订餐App,如果可以使其通过数据库来维护,那才是一款真正有意义的App。后面又搜了一下远程访问数据库的方法很快就找到了答案:http://www.cnblogs.com/xd502djj/archive/2011/04/01/2001826.html,接下来就是Android客户端了。
一开始直接使用第一篇文章的方法,直接在Button里面就用JDBC的方法访问数据库,直接不行,因为没有添加网络权限!添加了网络权限后依然不可以,联想起最近学的计算机网络知识,很多情况下我们所在的都是区域网,而外网是无法直接访问区域网的,所以就简单地通过电脑发射WiFi然后手机连上让其处于同一网段,不过依然不行。后来,我想起Android在主线程是不可以进行网络访问的,所以直接给其套个线程,然后就OK了。(后来用2.3的手机测试不加线程是OK的,貌似主线程不能访问网络是高版本的事儿,当然如果加了线程全都可以,所以都加线程就好了)
要远程访问本机数据库的四个点:
1、设置数据库可远程访问
2、添加网络权限
3、在线程中访问数据库
4、手机连上电脑发射出来的WiFi使其处于同一网段
关键代码:这里不作注释了,直接参见第一篇文章
button.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub JdbcUtils ju = new JdbcUtils(); String sql1 = "select * from userinfo"; try { List<Map<String, Object>> list = ju.query(sql1, null); System.out.println(list); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }).start(); } });操作结果:
1、一开始数据库userinfo表的数据
2、Android端查询
3、直接在navicat数据库管理工具删除一条记录
4、再次查询
一开始别人说这种方法是不可以的,必须通过一个WebServer来作中转,通过搭建一个服务器,在服务器上访问MySql,例如可以用PHP+MySql做服务器端,PHP将MySql中的数据处理成Json,然后Android通过http协议访问服务器得到Json数据。当然直接用JDBC来访问是不好的,因为别人一反编译,数据库的账号密码不全出来了,这样是不安全的,不过作为学习还是可以滴。
原文地址:http://blog.csdn.net/leelit/article/details/41074395