您的位置:首页 > 移动开发 > Android开发

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

2014-11-13 10:03 381 查看
关于通过JDBC访问本地MySql数据库的一篇文章/article/1904007.html,昨天学完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来访问是不好的,因为别人一反编译,数据库的账号密码不全出来了,这样是不安全的,不过作为学习还是可以滴。

实例:一个登陆界面



一些处理:

没输入账号或密码按登陆,则提示输入账号密码;输入账号和密码按登陆后,根据where username = 'username'这个条件来查询数据库,没有此记录提示没有此账号;否则检查返回的List<Map<String,Object>>,若list.get(0).get(password).equals(password),登陆成功,否则提示密码错误。

按注册则进入另外一个Activity



没输入账号或密码按注册,则提示输入账号密码;输入账号和密码按注册后,根据where username = 'username'这个条件来查询数据库,若返回有记录,则提示当前账号存在;否则将该账号和密码作为一条记录添加到数据库中。这里不贴代码了,因为大家的数据库各不相同。不知道实际企业级开发的用户登陆流程是怎样的呢~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: