今天突然想在Android的应用上直接访问mysql数据库,结果还是遇到一些困难,所以和大家分享下。虽然不提倡把在前端直接访问数据库,因为安全性太差了,什么都暴露在外面的。
1.用JDBC来访问的话要注意版本的问题 ,注意架包和mysql的版本是否一致,这个很重要 很多人都以为是自己代码的问题,一直在研究自己的代码,怎么研究也没有错 结果发现是架包的问题
2.如何接下来就是撸代码了
Class.forName(“com.mysql.jdbc.Driver”);// 动态加载mysql驱动
conn = DriverManager.getConnection(url,user,password);
// Statement里面带有很多方法,比如executeUpdate可以实现插入,更新和删除等
Statement stmt = conn.createStatement();
3.一开始问也以为前两步搞定完就可以连上了 结果我发现我太天真了,
在Android中进行网络连接才需要开多线程,但没想到连接数据库也需要开多线程的,一开始没开老是连不上,唉 那个蛋疼呀。
4.但是,人生坎坷呀,搞完又出现新的问题了,这个问题最坑爹,对于一个Android开发来说,一般都是后台直接给接口,哪里需要自己去搞数据库,原来为了安全起见,一般数据库都只允许本机访问,所以对在Android设备上是属于远程访问的,这是不被允许的,属于需要自己去设置数据库。
经过几番折腾才搞定这个问题
这是从其他人那里复制过来的解决方法
1、改表法
可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称”%”
mysql -u root -p
mysql>use mysql;
mysql>update user set host = ‘%’ where user = ‘root’;
mysql>select host, user from user;
2、授权法
在安装mysql的机器上运行:
1、d:\mysql\bin>mysql -h localhost -u root
//这样应该可以进入MySQL服务器
2、mysql>GRANT ALL PRIVILEGES ON . TO ‘root’@’%’WITH GRANT OPTION
//赋予任何主机访问数据的权限
例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON . TO ‘myuser’@’%’IDENTIFIED BY ‘mypassword’ WI
TH GRANT OPTION;
如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON . TO ‘myuser’@’192.168.1.3’IDENTIFIED BY
‘mypassword’ WITH GRANT OPTION;
3、mysql>FLUSH PRIVILEGES
//修改生效
4、mysql>EXIT
退出MySQL服务器,这样就可以在其它任何的主机上以root身份登录