用jsp更新数据库

时间:2016-05-02 01:49:48

标签: javascript java mysql jsp

我尝试使用以下方法从jsp更新mysql数据库中的表:

<form >
<input class="form-control" id="ex1" type="text" name="bt2">
<input type="submit" value="Skicka Tips" onclick="a()">
</form>

<script> function a(){
try
{
  // create a java mysql database connection
  String myDriver = "com.mysql.jdbc.Driver";
  String myUrl = "jdbc:mysql://localhost:3306/studentEnrollment";
  Class.forName(myDriver);
  Connection conn = DriverManager.getConnection(myUrl, "root", "12");

  // create the java mysql update preparedstatement
  String query = "update etudiants set dv_o_math = ? where first_name = ?";
  PreparedStatement preparedStmt = conn.prepareStatement(query);
  preparedStmt.setInt(1, 15);
  preparedStmt.setString(2,request.getParameter("bt2"));

  // execute the java preparedstatement
  preparedStmt.executeUpdate();

  conn.close();
}catch (Exception )
{ }

}

但仍然无法正常工作。我可以修复代码以获得结果。

Rq:我确实导入了java.sql。*

3 个答案:

答案 0 :(得分:1)

标记内写的代码由客户端计算机上的浏览器执行Eg:用于执行客户端验证的JavaScript代码。要连接到数据库,代码必须在服务器上执行,而不是在您使用JSP的客户机上执行,JSP是服务器端脚本语言。

使用scriptlets标签&lt; %%&gt;编写在将网页发送到客户端计算机/浏览器之前必须在服务器上执行的代码。

好像你是JSP的初学者。建议您阅读一些在线JSP和Servlet教程。

目前,请尝试使用以下代码: 的 a.html

<form action="FetchData.jsp">
<input class="form-control" id="ex1" type="text" name="bt2" >
<input type="submit" value="Skicka Tips">
</form>

<强> FetchData.jsp

<%@ page import="java.sql.*" %>
<%
try
{
  // create a java mysql database connection
  String myDriver = "com.mysql.jdbc.Driver";
  String myUrl = "jdbc:mysql://localhost:3306/studentEnrollment";
  Class.forName(myDriver);
  Connection conn = DriverManager.getConnection(myUrl, "root", "12");

  // create the java mysql update preparedstatement
  String query = "update etudiants set dv_o_math = ? where first_name = ?";
  PreparedStatement preparedStmt = conn.prepareStatement(query);
  preparedStmt.setInt(1, 15);
  preparedStmt.setString(2,request.getParameter("bt2"));

  // execute the java preparedstatement
  preparedStmt.executeUpdate();

  conn.close();
}catch (Exception e){ }

%>
<h3> The data is successfully updated</h3>

答案 1 :(得分:0)

设置onclick="a()"的事实正等着你执行一个Javascript函数,它将在客户端而不是服务器端执行,因此在你的情况下,这段代码永远不会像你期望的那样工作 尝试解决这个问题,所以不要把这个java代码放在标签之间,而是试着把它放在scriplet <% "your java code here" %>上,这是一个开始尝试着它的方法

<form >
<input class="form-control" id="ex1" type="text" name="bt2">
<input type="submit" value="Skicka Tips" name="a">
</form>

并在同一个文件中将java代码放在像这样的scriplet

之间
    <%
    if(request.getParameter("a")!=null){ // this is to avoid null pointer exception
      try{
      // create a java mysql database connection
      String myDriver = "com.mysql.jdbc.Driver";
      String myUrl = "jdbc:mysql://localhost:3306/studentEnrollment";
      Class.forName(myDriver);
      Connection conn = DriverManager.getConnection(myUrl, "root", "12");

      // create the java mysql update preparedstatement
      String query = "update etudiants set dv_o_math = ? where first_name = ?";
      PreparedStatement preparedStmt = conn.prepareStatement(query);
      preparedStmt.setInt(1, 15);
      preparedStmt.setString(2,request.getParameter("bt2"));

      // execute the java preparedstatement
      preparedStmt.executeUpdate();

      conn.close();
    } 
}catch(Exception e ){
e.getMessage();
}
%>

答案 2 :(得分:0)

虽然可以从JSP执行数据库操作(如Shubhi224所示),这不是你真正想做的事情。这种方法被称为“模型1”体系结构,导致显示逻辑(“视图”),业务逻辑(“模型”)和数据库访问代码(“存储库”)之间不希望的紧密耦合。 / p>

正如您的Java类应遵循单一责任原则(类应该只有一个更改原因),您的JSP也应该只有一个责任:呈现视图。

“模型2”体系结构的开发是为了响应JSP执行过多职责的局限性。模型2也称为MVC(它实际上是适用于基于http /浏览器的Web架构的MVC)。

我强烈建议您研究MVC,以了解如何正确分离应用程序中的职责。 MVC还经常与Controller-Service-Repository模式一起使用,从而在您的Repository类中执行数据库访问代码。我也建议研究这种设计模式。