0

请建议我从包含三列问题ID、问题和解决方案的mysql数据库中删除一行的代码。我想从浏览器中删除它,即它是一个 Web 应用程序。

4

3 回答 3

1

您可以考虑使用JDBC(Java 数据库连接)API 来解决您的问题。我建议您仔细查看以下有关使用 MySQL 数据库开发 Java Web 应用程序的简单教程。

https://blogs.oracle.com/JavaFundamentals/entry/creating_a_simple_web_application

http://www.javaguicodexample.com/javawebmysqljspjstljsf5.html

于 2012-04-04T06:39:34.457 回答
0

这是一个示例 Servlet。

但请记住,这只是为了向您展示如何做,您不应该在生产系统中使用它!这更多是为了演示,看看它是如何做的并学习如何做。这个 servlet 应该可以正常运行,但是您必须做一些事情!

无论如何,如果您还没有阅读这些文件,您应该阅读这些文件

http://docs.oracle.com/javaee/5/tutorial/doc/bnadp.html

http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html

我写这篇文章时没有考虑到的事情:

请求参数

如果找不到请求参数之一,则会抛出异常。您需要一种更好的方法来处理这种情况。

连接池

此示例将在每个请求上打开与数据库的连接。打开连接需要时间。因此每个人都使用连接池。此库/服务器打开指定数量的数据库连接。每次您需要访问数据库时,您都会从该池中获取它,如果您完成了,请将其返回到池中。

安全

知道这个 servlet 地址的人可以轻松地使用它来删除表中的任何行。这是你的工作来保护它。

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

    /**
     * DON'T USE IN PRODUCTION, JUST FOR LEARNING PURPOSES
    **/
public class MySqlServlet extends HttpServlet {

  public void doGet(HttpServletRequest request, HttpServletResponse response)
                               throws ServletException, IOException {

    long problemId;
    long problem;
    long solution;

    Object problemIdAsObject = request.getParameter("problemId");
    Object problemAsObject = request.getParameter("problem");
    Object solutionAsObject = request.getParameter("solution");

    if ( problemIdAsObject == null ){
        throw new ServletException("problemId has not been specified!");
    }

    if ( problemAsObject == null ){
        throw new ServletException("problem has not been specified!");
    }

    if ( solutionAsObject == null ){
        throw new ServletException("solution has not been specified!");
    }

    problemId = Long.valueOf( (String)problemIdAsObject );
    problem = Long.valueOf( (String)problemAsObject );
    solution = Long.valueOf( (String)solutionAsObject );    

    PreparedStatement statement = null;
    Connection connectionToDatabase = null;
    try{
        connectionToDatabase = getConnection();
        String sql = "DELETE FROM table WHERE problemid = ? and "+
                        "problem = ? and solution = ?";
        statement = connectionToDatabase.prepareStatement(sql);
        statement.setLong(1,problemId);
        statement.setLong(2,problem);
        statement.setLong(3,solution);
        statement.execute();
    }catch( SQLException sqle ){
        throw new ServletException(sqle);
    }catch( ClassNotFoundException cnfe ){
        throw new ServletException(cnfe);   
    }finally{
        try{
            statement.close();
            connectionToDatabase.close();
        }catch( SQLException sqle ){
            throw new ServletException(sqle);
        }
    }

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();

    out.println("<HTML>");
    out.println("<BODY>");
    out.println("OK");
    out.println("</BODY></HTML>");
  }

  private Connection getConnection() 
          throws ClassNotFoundException,SQLException{

            String userName = "user";
    String password = "password";
    String databaseName = "database";
    String serverAddress = "localhost";

    String connectionString = "jdbc:mysql://"+serverAddress+"/"+databaseName+
                "?user="+userName+"&password="+password;
            //If this line is not working, use this instead:
            //Class.forName("com.mysql.jdbc.Driver").newInstance();
    Class.forName("com.mysql.jdbc.Driver");     
    Connection connection = DriverManager.getConnection(connectionString);  
    return connection;
  }

}
于 2012-04-04T07:37:14.243 回答
-2

伙计,这很简单,首先你必须从 jsp 链接到任何 servlet。通过该链接,您必须将已删除的记录 ID 作为参数传递并在 servlet 中编写代码以从数据库中删除给定的行。然后返回您单击上一个链接的同一页面。

于 2012-04-04T06:49:15.260 回答