Java JDBC:无法将数据插入数据库中

问题描述 投票:-1回答:2

我正在编码几个小时,以将数据插入我的SQL数据库,但是什么也没发生。我什至无法调试Java,因为控制台没有任何输出。

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.PreparedStatement;
import java.text.DecimalFormat;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
 *
 * @author xxx
 */
public class MyServlet extends HttpServlet {

    private static final String URL = "jdbc:mysql://localhost:3306/userdata";
    private static final String USER = "root";
    private static final String PASSWORD = "root";

    private static final DecimalFormat DF2 = new DecimalFormat("#.##");
    private static Connection con;
    private static Statement stmt;
    private static ResultSet rs;

    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html;charset=UTF-8");

        try (PrintWriter out = response.getWriter()) {

            try {

                String myDriver = "com.mysql.jdbc.Driver";
                try {
                    Class.forName(myDriver);
                // opening database connection to MySQL server
                con = DriverManager.getConnection(URL, USER, PASSWORD);

                // getting Statement object to execute query
                 // the mysql insert statement
                String query = "INSERT INTO customers (customer, currency, amount) values ('Name', 'Currency', 100);";
                stmt.executeUpdate(query);


                // execute the preparedstatement

                // executing SELECT query
                rs = stmt.executeQuery(query);

                con.close(); 
                stmt.close();
                rs.close();

            } catch (SQLException sqlEx) {
                sqlEx.printStackTrace();
            }

        }

    }

}

我错了,什么都没发生?即使我将此代码用于Java类(而不是Servlet),我也只会收到一个编译错误,但没有消息。

我正在使用IDE Netbeans,而mysql DB是MySQL Workbench。 Java类正在使用main方法。

java sql jdbc
2个回答
0
投票
  1. 您的代码无法编译,您错过了第二个“ try”的catch异常。
  2. 您在哪里使用此类运行,如果您运行Java类,则该类别必须包含main()函数?
  3. 您应该使用诸如eclipse或IntelliJ之类的IDE进行编码,它可以帮助您更轻松地检测到错误。

0
投票

在Servlet代码中,我看不到您要写任何东西。因此,即使已编译,也不会将任何内容发送回浏览器。您可以将SQL异常写入创建的out编写器。为了更加精确,在您的异常中添加以下代码:out.println(sqlEx.printStackTrace());那至少应该表明您正在返回浏览器的异常。

您在servlet之外遇到的编译错误是什么?

这也许很明显,但是要使JDBC东西在您的服务器上工作,您需要安装,启动和配置MySQL服务器。必须定义引用的表,等等。您可以使用MySQL随附的工具在Java servlet环境之外进行检查。

© www.soinside.com 2019 - 2024. All rights reserved.