当前位置: 首页 > 知识库问答 >
问题:

无法通过Android Studio使用JDBC连接到云SQL数据库

查锦程
2023-03-14

我创建了一个正在运行的云Sql实例。我一直在尝试通过Android Studio和Eclipse连接到它,但都失败了。

package com.example.testapplication3;

import java.sql.*;

public class ConnectToSql {

    public String run()
    {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");

            String instanceConnectionName = "TheActualInstanceName"; 
            String databaseName = "BudgetApp";

            String IP_of_instance = "35.******";
            String username = "root";
            String password = "********";
            String jdbcUrl = String.format("jdbc:mysql://%s/%s?cloudSqlInstance=%s" + 
                    "&socketFactory=com.google.cloud.sql.mysql.SocketFactory&useSSL=false",
                    IP_of_instance, databaseName, instanceConnectionName);

            Connection connection = DriverManager.getConnection(jdbcUrl, username, password);

            Statement stat = connection.createStatement();
            ResultSet res = stat.executeQuery("Select * from users;");
            String result = "";
            while (res.next()) 
            {
                result += (res.getString(1) + " " + res.getString(2) + " " + res.getString(3));
            }

            connection.close();

            return result;
        }
        catch(Exception e)
        {
            System.out.println(e);
            return null;
        }

    }
}

我不断地从中得到这个错误:

java.sql.SQLNonTransientConnectionException: Cannot connect to MySQL server on 35.*******:3,306.
    Make sure that there is a MySQL server running on the machine/port you are trying to connect to and that the machine this software is running on is able to connect to this host/port (i.e. not firewalled). Also make sure that the server has not been started with the --skip-networking flag.

我所做的:

  • 确保我的IP在Instance Connections(实例连接)选项卡下被列入白名单
  • url连接的不同格式
  • 通过ping确保服务器已启动
  • 仅通过云外壳连接
  • 已确认云端端口已打开

共有1个答案

沈单弓
2023-03-14

您应该遵循从外部应用程序连接到云SQL的指南。您应该使用云SQL jdbc套接字工厂,我想您已经在使用了。

从您的代码中,我可以看到jdbc url看起来有点奇怪。请尝试将其更改为这种确切的格式:

jdbc:mysql://google/<DATABASE_NAME>?cloudSqlInstance=<INSTANCE_CONNECTION_NAME>&socketFactory=com.google.cloud.sql.mysql.SocketFactory&useSSL=false&user=<MYSQL_USER_NAME>&password=<MYSQL_USER_PASSWORD>

您错过了“谷歌”部分。希望这会有所帮助!如果这不起作用,可能值得尝试通过云SQL代理进行连接,正如您在我这里附加的第一个链接中看到的那样。

 类似资料:
  • 我正在尝试使用jdbc连接到我的MS SQL2008数据库,如下所示,但它的给出错误 我的数据库名为,实例名为。请建议我如何提供数据库实例名称和数据库名称在URL。 上面写着 但是当我尝试用相同的用户名和密码从DB GUI登录时,它被登录了。想知道在jdbc设置中在哪里提供数据库实例的详细信息 我也试过用下面的dut不管用

  • 我无法通过计算引擎连接到数据库。 到目前为止我所做的事情: 设置我的计算引擎 将我的计算引擎连接到我的云SQL 在我的计算引擎上安装并运行Cloud Proxy 在我的libs文件夹中包含JDBC Jar文件 创建了JDBC连接字符串 "jdbc: mysql:///? cloud dSqlInstance= -实现文件树(目录:“libs”,包括:[“*.jar”) -实现“com”。谷歌。云s

  • 我使用 JTDS 版本: jtds-1.3.1 MS SQL JDBC version: mssql-jdbc-8.4.0.jre8 even mssql-jdbc-9.2.0.jre8 Java 8 更新 251 为简单起见,代码将相同: Android Studio 無法連接到 Azure sql server 中的資料庫 连接到SQL服务器或AzureSQL时遇到问题。 我想用这个语法连接:

  • 这几天来,我无法在本地运行mac os ML的机器上连接到我的postgreSQL数据库。 我机器的nmap显示postgres在5432上运行,我可以通过pgadmin和psql进行本地连接。 收听地址设置为* 当我尝试连接JDBC时,我会遇到以下异常 组织。postgresql。util。PSQLException:连接被拒绝。检查主机名和端口是否正确,邮政局长是否接受TCP/IP连接。

  • 我创建了一个简单的类来测试与我的localhost数据库的通信,这是我用Mysql Workbench创建的。Mysql服务器正在运行。JDBC驱动程序被添加到我的项目的类路径中。 当我运行程序时,我得到以下异常: 线程“main”com.mysql.cj.jdbc.Exceptions.CommunicationsException异常:通信链接失败 最后一个成功发送到服务器的数据包是在0毫秒前

  • 我似乎无法使用Docker容器连接到CloudSQL。 首先,这里是我的文件路径:https://imgur.com/a/Nmx41o6 Dockerfile.dev: Dockerfile.sql 我的节点索引.js文件。我不认为有什么问题,也许我输入了错误的连接字符串格式?据我所知,密码和用户是正确的。 我得到的错误: 解决:我切换到TCP。拧入unix插座。这太令人困惑了。