我正在开发一个注册网页的网站。我想将用户详细信息存储在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");
}
}
1条答案
按热度按时间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
属性,该属性将由中的代码用作连接urlCloudSqlServlet.java
同样在appengine-web.xml
,我换了衣服<service>
姓名收件人default
. 实际上,没有必要更改此文件中的任何内容,但由于个人喜好,我选择更改服务已在下载的
POM
部署到gaemvn appengine:deploy
这是一个用于mysql的gae到云sql连接的最小示例。尝试按照下面的步骤来测试连接是否与提供的代码示例兼容。