为什么googleappengine jdbc连接url不起作用?

8wigbo56  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(452)

我正在开发一个注册网页的网站。我想将用户详细信息存储在googleappengine上的mysql数据库表中。下面是jdbc连接url:-

Connection  con = DriverManager.getConnection("jdbc:mysql://google/my_database_name?cloudSqlInstance=my_db_instance&socketFactory=com.google.cloud.sql.mysql.SocketFactory&user=My_Username&password=My_Password&useSSL=false", "root", "My_Password");

但是这个url在注册后仍然不能正常工作,我的数据库表中没有存储任何详细信息。所以,你有什么建议吗。谢谢您
下面是registrationservlet代码,它从register.jsp获取输入值,我希望它将这些值存储到我的gcloud db中table:-

@WebServlet("/RegistrationServlet")
public class RegistrationServlet extends HttpServlet {
 private static final long serialVersionUID = 1 L;

 public RegistrationServlet() {
  super();

 }

 @Override
 protected void doGet(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {

 }

 @Override
 protected void doPost(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {

  PrintWriter out = response.getWriter();

  String first_name = request.getParameter("f1");
  String last_name = request.getParameter("l1");
  String phone = request.getParameter("p1");
  String email = request.getParameter("e1");
  String uname = request.getParameter("uname");
  String user_dob = request.getParameter("udate");
  String password = request.getParameter("pwd");

  UserData ud = new UserData();

  ud.setFirst_name(first_name);
  ud.setLast_name(last_name);
  ud.setUname(uname);
  ud.setPhone(phone);
  ud.setEmail(email);
  ud.setUser_dob(user_dob);
  ud.setPassword(password);

  // validate given input
  if (first_name.isEmpty() || last_name.isEmpty() || phone.isEmpty() || email.isEmpty() || password.isEmpty()) {
   RequestDispatcher rd = request.getRequestDispatcher("Register.jsp");
   out.println("<font color=red>Please fill all the fields</font>");
   rd.include(request, response);
  } else {
   try {
    Class.forName("com.mysql.jdbc.Driver");
   } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   // loads mysql driver

   try {
    Connection con = DriverManager.getConnection("jdbc:mysql://google/my_database_name?cloudSqlInstance=my_db_instance&socketFactory=com.google.cloud.sql.mysql.SocketFactory&user=My_Username&password=My_Password&useSSL=false", "root", "My_Password");

    String query = "insert into users values(?,?,?,?,?,?,?)";

    PreparedStatement ps = con.prepareStatement(query); //generates sql query

    ps.setString(1, first_name);

    ps.setString(2, last_name);

    ps.setString(3, uname);

    ps.setString(4, phone);

    ps.setString(5, email);

    ps.setString(6, user_dob);

    ps.setString(7, password);

    ps.executeUpdate();

    System.out.println("successfully inserted");

    ps.close();

    con.close();

   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   HttpSession session = request.getSession();
   session.setAttribute("username", first_name);
   response.sendRedirect("Success.jsp");

  }
 }
ff29svar

ff29svar1#

我已经学习了gcpcloudsqlformysql连接示例,它在部署之后仍然有效。我将一步一步地执行我所做的过程,这样您就可以比较并查看您的端是否缺少一些配置步骤。
使用mysql第二代云sql示例。这个示例与我将在其中部署脚本的googleappengine位于同一个项目中
在cloudsql示例中创建了一个新数据库
执行命令 gcloud sql instances describe instance1 获取以下形式的示例连接名称 <MY-PROJECT>:<REGION>:<INSTANCE-NAME> 下载了gcp java代码示例并获得java 8应用程序引擎标准云sql示例:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git cd java-docs-samples/appengine-java8/cloudsql/ 已完成字段 <INSTANCE_CONNECTION_NAME> , <user> , <password> 以及 <database>POM 文件中包含我的案例的连接值。此字段将由 appengine-web.xml 创建 cloudsql 属性,该属性将由中的代码用作连接url CloudSqlServlet.java 同样在 appengine-web.xml ,我换了衣服 <service> 姓名收件人 default . 实际上,没有必要更改此文件中的任何内容,但由于个人喜好,我选择更改服务
已在下载的 POM 部署到gae mvn appengine:deploy 这是一个用于mysql的gae到云sql连接的最小示例。尝试按照下面的步骤来测试连接是否与提供的代码示例兼容。

相关问题