栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中本地连接数据库没问题,到Android Studio中的一系列问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中本地连接数据库没问题,到Android Studio中的一系列问题

折磨已久的在Android studio中连接Mysql数据库的各种问题,疯狂的折磨,疯狂的解决,度娘也不能知道我的问题!!!那么接下来,一一道来问题及解决办法。。。。。。。。。。

1、在Java代码中JDBC连接本地的Mysql数据库,没有任何问题,就是加载驱动、建立连接,连接的时候使用localhost或者127.0.0.1,连接的代码,这里,你应该没有任何问题:

//加载驱动

try {

//这里的cj是因为我是用的是mysql-connector-java-8.0.22.jar
            Class.forName("com.mysql.cj.jdbc.Driver");
            System.out.println("加载驱动成功了!");
        }catch(Exception e)
        {
            System.out.println("加载驱动失败");
        

        //建立连接
        Connection con=null;
        String uri="jdbc:mysql://127.0.0.1:3306/test?useSSL=true&serverTimezone=UTC";
        String user="你数据库的用户名";
        String password="你用户名对应的密码";
        try {
            con=DriverManager.getConnection(uri,user,password);
            System.out.println("连接成功!");
        }catch(Exception e)
        {
            System.out.println("连接失败!");
        }

到这里你在Java代码中如果测不同就不要再往看了。。。。

2、第一步成功了,但是但是,我来到了最新版本的Android Studio里面,还是同样的连接,还是原来的代码,就出现了一些列问题了,但归根到底就是一个问题,那就是连接不成功,关键是也没报什么错误。。。。那我们就一一来看,不成功的原因解析:

第一:你的数据库没有授权可远程访问?可能你会问,我的安卓模拟器是在我的本地机启动的,我的数据库也在这个机器上,为啥需要数据库可远程访问?那问你一句话,你的Android模拟器和你的电脑是同一个机器吗?。。。。。。。。。。。你的模拟器上有mysql数据库吗?回答肯定是否定的,那么这里,你就应该可以理解为什么需要你的数据库可远程访问了,那问题又来了,如何设置Mysql数据库可远程访问,百度一下,网络上有N多回答:可以参考链接:MySQL【远程用户】授权设置(一)_探索丶挑战丶突破-CSDN博客,这个里面有非常详细的操作,去看,去做就可以了!!!

此时,你应该使用另一台机器的MySQL远程访问进行测试,如果能够测试连接通,那么说明你当前用户的远程访问权限设置没有任何问题了。

第二:当第一部完成之后,在你的安卓程序里面应该开始编写连接mysql数据的代码了,我把主要的代码放在下边,请结合自己的设计,进行修改和使用:

public class Log extends Activity {
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.log_activity);
        Button bt=(Button)findViewById(R.id.lianjie);
        bt.setonClickListener(new View.onClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                new Thread(new Runnable() {

                    @Override
                    public void run() {
                        try {
                            Class.forName("com.mysql.cj.jdbc.Driver");
                            System.out.println("加载成功!");
                        }catch(Exception e)
                        {
                            System.out.println("加载驱动失败");
                        }
                        //建立连接
                        Connection con=null;
                        String uri="jdbc:mysql://IP:3306/test";
                        String user="root";
                        String password="root";
                        try {
                            System.out.println("这里被执行了!");
                            con= DriverManager.getConnection(uri,user,password);
                            System.out.println("连接成功!");

                        }catch(Exception e)
                        {
                            System.out.println("连接失败!");
                        }
                    }
                }).start();
            }
    });

    }
}

这段代码其实就是Java连接数据库的代码,注意:代码连接中的IP请使用你自己当前的IP地址替换,如果你不知道自己的IP是多少,请进入cmd运行界面,输入:ipconfig进行查询。

上边代码,我测试过,没有问题,但但但。。。。你拿到后,可能还是连接不成功,也许你在反复的寻求代码的错误,此时就该看我的第三了;

第三:边的流程做完之后,为什么还是连接不成功呢????这一步发现用的是

mysql-connector-java-8.0.22.jar

这个jar包,可在Java中测试木有问题,但在android中就是不行,为什么呢?版本高了!!!至于为什么高版本就不可以呢?只有一个理解,不支持,至于为什么不支持!!!我也不知道!!!!,那么为了解决问题,我们就换一个低版本吧:mysql-connector-java-5.1.47.jar,换成这个,没问题!,这个的下载地址,请去我的网盘提取:链接:https://pan.baidu.com/s/1bEbrIJrskpOW0x-l51TUbw 
提取码:WSYJ

,然后放到libs下边,添加引用,注意:把原来的8.0.22版本要从引用里面移除,至于怎么移除:

》 

选中你要移除的jar包,点上方的减号,然后点击OK就可以了,这一步完成之后,就快了,但但但。。。。可能还是连接不成功,那就接着尝试我的第四吧。

第四:关闭你的电脑的防火墙,至于怎么关闭,那就请自己百度吧!

好,大功告成! 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/490179.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号