mysql - 无法在 NetBeans Java Web 应用程序中连接到 mysql 数据库

标签 mysql servlets netbeans

我是 Java 网络开发新手。我正在编写这个基本的 Java Web 应用程序,它将把客户信息存储到数据库中。我使用MVC-2架构。我的 Jsp 向 servlet 发送一个请求,该 servlet 又尝试实例化一个 bean 并将该对象插入到数据库中。 当我尝试连接到数据库(在 Debug模式下)时,连接变量返回空。所以无法插入数据。

这是与数据库建立连接的类

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package customer;

import java.io.Serializable;
import java.sql.Connection;
import java.sql.DriverManager;

/**
 *
 * @author 
 */
public class DatabaseOperations implements Serializable 
{
    private static Connection connection;
    public DatabaseOperations()
    {
        try
        {
            String username = "root";
            String password = "root";
            String url = "jdbc:mysql://localhost/test";
            Class.forName ("com.mysql.jdbc.Driver").newInstance();
            connection = DriverManager.getConnection (url, username, password);

            System.out.println("Database connection established");
        }
        catch(Exception e)
        {

        }
    }

    public static Connection getConnection()
    {
        return connection;
    }
}

这是将客户添加到数据库的方法

public void addCustomer(CustomerBean customer) throws SQLException {
        DatabaseOperations db = new DatabaseOperations();
        connection = DatabaseOperations.getConnection();
        statement = connection.createStatement();

        String query = "insert into customer (name, address, phone, email) "
                + "values (" + customer.name + ","
                + customer.address + ","
                + customer.phone + ","
                + customer.email + "," + ")";

        statement.executeUpdate(query);
    }

最后这是我调用添加客户方法的 servlet

   /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package customer;

    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import customer.CustomerBean;
    import javax.servlet.RequestDispatcher;

    /**
     *
     * @author 
     */
    public class CustomerServlet extends HttpServlet {

        /**
         * Processes requests for both HTTP
         * <code>GET</code> and
         * <code>POST</code> methods.
         *
         * @param request servlet request
         * @param response servlet response
         * @throws ServletException if a servlet-specific error occurs
         * @throws IOException if an I/O error occurs
         */
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();

            CustomerBean customer = new CustomerBean();
            try {
                out.println("tests");

                customer.setName(request.getParameter("name"));
                customer.setEmail(request.getParameter("email"));
                customer.setAddress(request.getParameter("address"));
                customer.setPhone(request.getParameter("phone"));

/************** ADD CUSTOMER TO DB HERE***********************/
                customer.addCustomer(customer);

                request.setAttribute("cust", customer);
                request.getRequestDispatcher("/index.jsp").forward(request, response);
            } 
            catch (Exception e) 
            {            
                e.printStackTrace();

            }
        }

最佳答案

首先,我想指出您的代码对 SQL 注入(inject)是开放的。就我个人而言,我是过程的粉丝,所以我建议:您应该在 mysql 中创建一个过程来插入新记录,然后为该存储过程提供参数(名称、地址等)。

至于手头的问题:在 statement.executeUpdate 行之后,尝试关闭连接。另外,将 Class.forName 提取到您的 main 方法中。它应该只执行一次。另外,完成此操作后,请删除 .newInstance()

如果所有这些都不起作用,请将整个连接提取到全局可访问的静态变量并且不要多次分配给它。然后看看你的程序是否有效。如果没有,那么您将遇到一个单独的问题。

关于mysql - 无法在 NetBeans Java Web 应用程序中连接到 mysql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17797375/

相关文章:

MySQL 查询 : List of Part Numbers, 仅返回数据库中不存在的部件号

php - 我需要一本 PHP 高级 MySQL 的书

Mysql:在具有许多外键的表中添加随机行

带有 AES_DECRYPT 的 Php mysql LOWER 函数

java - 在 Netbeans 中 Tomcat 启动失败

java - NetBeans 7.3 自由格式 Java 项目 - 如何将 3d 方库添加到 project.xml?

java - 未调用 HttpSessionBindingListner 方法

java - MultipartConfig getPart 必须在 getParameter 之前调用

java - 为什么在 HttpServlet 中放置 response.addHeader 会导致失败

java - 如何访问netbeans构建jar文件中的文本文件?