如何使用java将表单数据插入GoogleCloud Mysql数据库

如何使用java将表单数据插入GoogleCloud Mysql数据库,java,mysql,eclipse,google-cloud-platform,Java,Mysql,Eclipse,Google Cloud Platform,我正在尝试使用常见的MySQL命令将表单数据上传到GoogleCloud MySQL数据库,如下所示: try {java.sql.Connection conn=dao.getcon(); PreparedStatement ps=conn.prepareStatement("insert into register values(?,?,?,?,?,?,?,?)"); ps.setString(1,"Subhanshu"); ps.setString(2,"b

我正在尝试使用常见的MySQL命令将表单数据上传到GoogleCloud MySQL数据库,如下所示:

try {java.sql.Connection conn=dao.getcon();
        PreparedStatement ps=conn.prepareStatement("insert into register values(?,?,?,?,?,?,?,?)");
    ps.setString(1,"Subhanshu");
    ps.setString(2,"bigu");
    ps.setLong(3,54566522);
    ps.setLong(4,5456662);
    ps.setString(5,"subhanshu");
    ps.setString(6,"hello");
    ps.setString(7,"hello");
    ps.setString(8,"online");
    ps.execute();
    conn.commit();
    flag=1;
    System.out.print("Success");

    }
    catch(Exception e){

    }
但是,数据没有插入到数据库中。另一方面,连接很容易建立,如下所示:

    Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
Aug 02, 2018 7:08:00 PM com.google.cloud.sql.mysql.SocketFactory connect
INFO: Connecting to Cloud SQL instance [edu-vitae-211606:asia-south1:edu-vitae1].
Aug 02, 2018 7:08:00 PM com.google.cloud.sql.mysql.SslSocketFactory getInstance
INFO: First Cloud SQL connection, generating RSA key pair.
Aug 02, 2018 7:08:01 PM com.google.cloud.sql.mysql.SslSocketFactory fetchInstanceSslInfo
INFO: Obtaining ephemeral certificate for Cloud SQL instance [edu-vitae-211606:asia-south1:edu-vitae1].
Aug 02, 2018 7:08:03 PM com.google.cloud.sql.mysql.SslSocketFactory createAndConfigureSocket
INFO: Connecting to Cloud SQL instance [edu-vitae-211606:asia-south1:edu-vitae1] on IP [35.200.134.221].
我用来与谷歌云数据库建立连接的代码如下:`

 package com.example.dao;

import java.sql.Connection;
import java.sql.DriverManager;

public class dao {
    private static Connection con;
    public static Connection getcon(){
        try{
            String instanceConnectionName = "edu-vitae1";
            String databaseName = "eduvitae";
             String username = <USER>;
             String password = <PASSWORD>;
             Class.forName("com.mysql.jdbc.Driver");
             String jdbcUrl = String.format(
             "jdbc:mysql://google/eduvitae?cloudSqlInstance=edu-vitae-211606:asia-south1:edu-vitae1&socketFactory=com.google.cloud.sql.mysql.SocketFactory&user=<USER>&password=<PASSWORD>&useSSL=false",
             databaseName,
            instanceConnectionName);
            //Connection con=DriverManager.getConnection("jdbc:mysql://google/eduvitae?cloudSqlInstance=edu-vitae-211606:asia-south1:edu-vitae1&socketFactory=com.google.cloud.sql.mysql.SocketFactory&useSSL=false&user=<USER>&password=<PASSWORD>");
             Connection con = DriverManager.getConnection(jdbcUrl, username, password);
             //con=DriverManager.getConnection("jdbc:mysql://localhost:3306/edu",<USER>,<PASSWORD>);
             //String url= String.format("jdbc:mysql://35.200.134.221:3306/edu-vitae-211606:asia-south1:edu-vitae1");
             //Connection con= DriverManager.getConnection(url, <USER>,<PASSWORD>);
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        return con;
    }

}
package com.example.dao;
导入java.sql.Connection;
导入java.sql.DriverManager;
公共类dao{
专用静态连接;
公共静态连接getcon(){
试一试{
字符串instanceConnectionName=“edu-vitae1”;
字符串databaseName=“eduvitae”;
字符串用户名=;
字符串密码=;
Class.forName(“com.mysql.jdbc.Driver”);
String jdbcUrl=String.format(
“jdbc:mysql://google/eduvitae?cloudSqlInstance=edu-vitae-211606:asia-south1:edu-vitae1&socketFactory=com.google.cloud.sql.mysql.socketFactory&user=&password=&usesl=false“,
数据库名,
instanceConnectionName);
//Connection con=DriverManager.getConnection(“jdbc:mysql://google/eduvitae?cloudSqlInstance=edu-vitae-211606:asia-south1:edu-vitae1&socketFactory=com.google.cloud.sql.mysql.socketFactory&usesssl=false&user=&password=“);
Connection con=DriverManager.getConnection(jdbcUrl、用户名、密码);
//con=DriverManager.getConnection(“jdbc:mysql://localhost:3306/edu",,);
//字符串url=String.format(“jdbc:mysql://35.200.134.221:3306/edu-vitae-211606:asia-south1:edu-vitae1“;
//Connection con=DriverManager.getConnection(url,);
}
捕获(例外e){
e、 printStackTrace();
}
返回con;
}
}
请告诉我如何将表单数据插入谷歌云数据库`
提前谢谢。

在仔细检查我的代码后,我发现了我的问题。注意,在代码的顶部,我创建了一个全局变量“private static Connection con”;但在try块中,我使用Connection con=DriverManager.getConnection(jdbcUrl,username,password);,创建了另一个局部变量;。发生的事情是,局部变量被用来建立连接。因此连接con变量包含null connection。我在下面发布解决方案以供参考:

   package com.example.dao;

import java.sql.Connection;
import java.sql.DriverManager;

public class dao {
    private static Connection con;
    public static Connection getcon(){
        try{
            String instanceConnectionName = "edu-vitae1";
            String databaseName = "eduvitae";
             String username = <USER>;
             String password = <PASSWORD>;
             Class.forName("com.mysql.jdbc.Driver");
             String jdbcUrl = String.format(
             "jdbc:mysql://google/eduvitae?cloudSqlInstance=edu-vitae-211606:asia-south1:edu-vitae1&socketFactory=com.google.cloud.sql.mysql.SocketFactory&user=<USER>&password=<PASSWORD>;&useSSL=false",
             databaseName,
            instanceConnectionName);
             con = DriverManager.getConnection(jdbcUrl, username, password);
            //Connection con=DriverManager.getConnection("jdbc:mysql://google/eduvitae?cloudSqlInstance=edu-vitae-211606:asia-south1:edu-vitae1&socketFactory=com.google.cloud.sql.mysql.SocketFactory&useSSL=false&user=<USER>&password=<PASSWORD>;");
             //con=DriverManager.getConnection("jdbc:mysql://localhost:3306/edu",<USER>,<PASSWORD>;);
             //String url= String.format("jdbc:mysql://35.200.134.221:3306/edu-vitae-211606:asia-south1:edu-vitae1");
             //Connection con= DriverManager.getConnection(url, <USER>,<PASSWORD>;);
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        return con;
    }

}
package com.example.dao;
导入java.sql.Connection;
导入java.sql.DriverManager;
公共类dao{
专用静态连接;
公共静态连接getcon(){
试一试{
字符串instanceConnectionName=“edu-vitae1”;
字符串databaseName=“eduvitae”;
字符串用户名=;
字符串密码=;
Class.forName(“com.mysql.jdbc.Driver”);
String jdbcUrl=String.format(
“jdbc:mysql://google/eduvitae?cloudSqlInstance=edu-vitae-211606:asia-south1:edu-vitae1&socketFactory=com.google.cloud.sql.mysql.socketFactory&user=&password=;&usesl=false“,
数据库名,
instanceConnectionName);
con=DriverManager.getConnection(jdbcUrl、用户名、密码);
//Connection con=DriverManager.getConnection(“jdbc:mysql://google/eduvitae?cloudSqlInstance=edu-vitae-211606:asia-south1:edu-vitae1&socketFactory=com.google.cloud.sql.mysql.socketFactory&usesssl=false&user=&password=;”;
//con=DriverManager.getConnection(“jdbc:mysql://localhost:3306/edu",,;);
//字符串url=String.format(“jdbc:mysql://35.200.134.221:3306/edu-vitae-211606:asia-south1:edu-vitae1“;
//Connection con=DriverManager.getConnection(url;);
}
捕获(例外e){
e、 printStackTrace();
}
返回con;
}
}

嗨!你能把你上传时使用的代码编辑成问题吗?@GuillermoCacheda谢谢你的回答,但我不明白你要我做什么。你能再详细一点吗。对不起,我一开始没看到你是如何执行查询的,我现在看到了。您是否在执行查询后?@GuillermoCacheda我正在运行ps.execute()命令来执行我准备好的语句。我对提交一无所知。
连接
类的“将自上次提交/回滚以来所做的所有更改永久化,并释放此连接对象当前持有的所有数据库锁”。这是相似的。在调用
ps.execute()
之后,尝试运行
dao.getcon().commit()