码农公社 210.net.cn 210是何含义?10月24日是程序员节,1024 =210、210既
210
之意。
首先默认你的android studio都配置好了。
第一步:导入jar包,写代码,请参考这个帖子:
该帖子是我阅贴无数之后总结出的对小白来说测试mysql连接最适合的帖子啦。补充一下,新建一个java文件,粘贴第一堆代码,在mainactivity里面沾第二堆代码。如果你导入的是mysql8.0之前的jar包,String DRIVER = “com.mysql.jdbc.Driver”,如果你导入的是mysql8.0之后的jar包,String DRIVER = “com.mysql.cj.jdbc.Driver”
第二步:修改bug。这也就是困扰了我很久的垃圾bug。简要报错信息如下:
The last packet sent successfully to the server was 0 milliseconds ago
翻译一下:就是说你发了一个包到mysql服务器,人家不回复,就是连接失败。
主要是我的这一行代码报错:conn = DriverManager.getConnection(jdbcUrl, username, password);
注意:我遇到的问题是运行后立马报错,有些帖子提到更改wait_timeout,就不大适用于这种情况。
解决方案如下:
1、简单粗暴直接关闭防火墙
我的报错就是由于防火墙禁用了mysql服务导致的。当然你也可以在防火墙高级设置里开放msql的端口,一般为3306。
2、更改url的IP地址
如果你是在电脑上搭建了一个本地mysql数据库,那么将url里面的IP地址改为电脑在局域网里的地址(在命令行界面直接输入ipconfig命令查看局域网地址)。因为你是采用模拟器或真机模拟,你想实现的是手机来访问电脑上的mysql数据库,但是手机访问的localhost或者127.0.0.1代表的是自身,并不能访问电脑。我相信很多人和我一样,同样的代码用eclipse可以成功访问mysql,但是在android studio下就不能访问,正是因为eclipse是电脑访问自身,可以用localhost或者127.0.0.1,但是手机访问电脑必须用电脑的实际ip地址。
3、升级权限
你需要给你的手机IP地址访问电脑数据库的权限,在命令行界面(dos界面)输入以下语句: (注意第一句命令后面没有分号,其他每一句命令下面都有分号;以下所有命令中引号都是英文,有的小伙伴反应粘贴到dos界面就是中文引号,大家自己改一下哈)
1.mysql -uroot -p(登陆mysql数据库。大家查看一下自己数据库的用户名和密码,u后面是用户名,p后面是密码,没有的话就不需要输入) 2.select host,user from mysql.user;(查看数据库的用户)
3.CREATE USER ‘root’@‘192.168.%’ IDENTIFIED BY ‘’;(创建叫做root的用户,IP地址是192.168.%,代表任何你局域网内都可以访问,当然你可以直接是%,这样所有人都能访问。identified by后面是密码,我设为为空,即没有密码)
4.grant all privileges on ** to ‘root’@‘192.168.%’ identified by ‘’ with grant option;(给你刚创建的用户升级访问mysql数据库的权限。注意:这句中两个星号之间有个英文点,由于编辑器的原因我打不出来,大家参考图片)
5.flush privileges;(刷新权限)
6.quit;
终于,你再调试一下你的Android studio代码,竟然发现他成功了哈哈。到此为止,圆满解决了哈哈。