首页 > 代码库 > Android数据库:通过JDBC直接访问MySql

Android数据库:通过JDBC直接访问MySql

    关于通过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来访问是不好的,因为别人一反编译,数据库的账号密码不全出来了,这样是不安全的,不过作为学习还是可以滴。

Android数据库:通过JDBC直接访问MySql