关于#mysql#的问题,如何解决?(语言-java)

**W/System.err: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.**在android studio的项目中想连接mysql数据库报错,我查看自己版本时mysql5.7 下载对应的jdbc版本为5.1.49但是不能连接,查了很多资源都是说我版本不对一需要修改,让我对应,但是我查看后发现版本是对应的所有不知道如何解决了

img


完整报错内容是这样滴

img

看下下面具体的报错堆栈信息。

这个问题可能由多种原因导致,以下是一些可能的解决方案:

  1. 检查数据库连接信息:确保你的数据库URL、用户名和密码都是正确的。如果你的MySQL服务器不在本地,确保你的服务器允许远程连接。

  2. 检查网络连接:如果你的MySQL服务器不在本地,确保你的设备可以访问到服务器。你可以尝试在设备上ping服务器的IP地址来检查网络连接。

  3. 检查MySQL版本和JDBC驱动版本:你已经确认了你的MySQL版本和JDBC驱动版本是匹配的,这是正确的。但是,你还可以尝试更新到最新的JDBC驱动版本,看看是否可以解决问题。

  4. 检查Android Studio的网络权限:Android应用需要在Manifest文件中声明网络权限才能访问网络。确保你的AndroidManifest.xml文件中有以下行:

    <uses-permission android:name="android.permission.INTERNET" />
    
  5. 不要在主线程中进行网络操作:Android不允许在主线程中进行网络操作,因为这可能会导致应用无响应。如果你正在尝试在主线程中连接到数据库,这可能是问题的原因。你应该在一个新的线程中进行网络操作。

  6. 使用专门的数据库访问技术:在Android应用中直接连接到MySQL数据库并不是一个好的做法,因为这可能会导致安全问题和性能问题。你应该考虑使用一个服务器端的API来访问数据库,或者使用一个适合移动设备的数据库,如SQLite。

如果以上的建议都不能解决你的问题,你可能需要提供更多的信息,如你的代码和完整的错误消息,以便更好地诊断问题。

先写一个纯Java的测试代码看看能不能连成功,很可能是Android的问题。看下异常栈中有没有caused by的异常信息

  • 这篇博客: 关于mysql 8.0连接JDBC中各种错误的汇总中的 首先第一种错误:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 这个错误是由驱动和数据库版本不一致造成的。
    我的数据库是mysql8.0但是使用了mysql-connector-java-5.1.38.jar这个驱动。所以会报这个错误。
    解决方法:
    将驱动替换为相应mysql8.0版本的驱动。
    我的驱动是mysql-connector-java-8.0.13.jar 将它替换掉原来的驱动即可。
    这个驱动是在官网下载的,我当时在安装mysql时就已经下载了全家桶可以在自己的文件夹中找到我的路径仅供参考。
    在这里插入图片描述
    然后还需修改第二个地方:
    将com.mysql.jdbc.Driver改为com.mysql.cj.jdbc.Driver即可