使用jsp抛出异常插入mysql数据库

Posted

技术标签:

【中文标题】使用jsp抛出异常插入mysql数据库【英文标题】:Inserting into mysql database using jsp throwing exception 【发布时间】:2018-03-29 14:32:34 【问题描述】:

我正在尝试将注册表单页面中的信息存储到相应的数据库,但代码抛出异常,如“无法连接到数据库”我是初学者,很难弄清楚出了什么问题在这。有人可以帮忙吗?

<%@page import="java.sql.*"%>
<html>
<head>  
<meta charset="utf-8">  
<title>Sign Up</title> 
<link rel="stylesheet" type="text/css" href="reg.css">
</head>  
<body> 

<%
  String name = request.getParameter("name");
  String email = request.getParameter("email");
  String password = request.getParameter("password");
  String date = request.getParameter("date");
  String sex = request.getParameter("sex");

  Connection con = null;
  PreparedStatement ps = null;

  String connectionURL = "jdbc:mysql://localhost:3306/table";
  String driverName = "com.mysql.jdbc.Driver";
  String user = "root";
  String pass = "";

  Class.forName(driverName).newInstance();

       try 

            con = DriverManager.getConnection(connectionURL, user, pass);

          String queryString = "INSERT INTO detail(name,password,email,date,sex) VALUES (?,?,?,?,?)";

          ps = con.prepareStatement(queryString);
                ps.setString(1, name);
          ps.setString(2, password);
        ps.setString(3, email);
        ps.setString(4, date);
          ps.setString(5, sex);

          int updateQuery = ps.executeUpdate();
                        if (updateQuery != 0)  
                            out.println("Successful Registration");
                         
         
        catch (Exception ex) 
        out.println("Unable to connect to database.");

           
        finally 
            // close all the connections.
            ps.close();
            con.close();
         
 %>

</body>
</html>

【问题讨论】:

请发布完整的异常堆栈跟踪。 脚本!我最后一次使用它们是在 2001 年!你为什么还要用这个?您应该尽快(至少)或 JSF(更好)迁移到 JSP 标签。 【参考方案1】:
    您的项目中是否包含驱动程序 jar 文件? String connectionURL = "jdbc:mysql://localhost:3306/table"; 的表是您要连接的数据库名称?

     catch (Exception ex) 
                 out.println("Unable to connect to database.");
    
           
    

包括ex.printStackTrace(),它将向您显示确切的错误。

【讨论】:

谢谢你! stacktrace 帮助我发现表单正在向 NOT NULL 字段发送空值。【参考方案2】:

嗯...“无法连接到数据库”就是这个意思。您的 JSP 无法连接到数据库。

请在您的问题中添加完整的堆栈跟踪(错误)。这样问题就更清楚了。

在我看来,可能的罪魁祸首是:

    您的 JEE 容器中没有加载驱动程序。是否添加了数据库驱动程序? 您的驱动程序配置不正确。您在添加驱动程序时是否指定了正确的“驱动程序类”? 您的网址错误。请检查 URL 的值。格式是否正确?按照示例一的确切格式并插入您的特定值。 在该 HOST:PORT 上没有实际运行的数据库。数据库是否已创建? 您的凭据有误、已禁用或根本不存在。与您的 DBA 核对您的用户名和密码。你有合适的吗?

所以,如果您已经检查过并且认为您拥有所有这些优点,请先使用独立客户端检查连接。这样,您将看到是否可以建立连接。我会推荐 Squirrel SQL Client 或 Eclipse 的 Data Source Explorer。尝试检查您的参数是否正确。

检查与本地客户端的连接后,JEE 容器中的一切都应正常运行。

【讨论】:

以上是关于使用jsp抛出异常插入mysql数据库的主要内容,如果未能解决你的问题,请参考以下文章

当尝试使用 JPA 将数据插入 MySQL 数据库时,我被抛出异常:列 'billing_address' 不能为空

在python中使用mysql连接器插入数据

如何Mysql触发器中抛出一个异常

无法使用jsp将数据插入mysql

每当 MySQL 抛出警告时,我如何通知 sqlalchemy 引发错误?

H2 db插入带引号的数据抛出异常