【问题标题】:Couldn't insert fields in database [closed]无法在数据库中插入字段[关闭]
【发布时间】:2014-07-19 05:56:58
【问题描述】:

我是 java web 开发的新手。我正在尝试开发一个项目。我收到了SQLException 错误。

这是我的 servlet 代码:

protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
    // TODO Auto-generated method stub
    res.setContentType("text/html");
    PrintWriter pw=res.getWriter();

    try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/ocp2","root", "");
        ps=con.createStatement();
        RequestDispatcher rr;

        String courseid=req.getParameter("courseid");
        String coursename=req.getParameter("coursename");
        String s1=req.getParameter("sday");
        String s2=req.getParameter("smonth");
        String s3=req.getParameter("syear");
        String sdate=s1+'-'+s2+'-'+s3;
        String s4=req.getParameter("eday");
        String s5=req.getParameter("emonth");
        String s6=req.getParameter("eyear");
        String edate=s4+'-'+s5+'-'+s6;
        String duration=req.getParameter("duration");
        String fee=req.getParameter("fee");

        pw.println("insert into course values('"+courseid+"','"+coursename+"','"+sdate+"','"+edate+"','"+duration+"',"+fee+")");
        ps.executeUpdate("insert into course values('"+courseid+"','"+coursename+"','"+sdate+"','"+edate+"','"+duration+"',"+fee+")");
        con.commit();

        rr= req.getRequestDispatcher("incousuc.html");
        rr.forward(req,res);
    } catch(ClassNotFoundException e) {
        pw.println("exception"+e);
    } catch(SQLException e) {
        pw.println("SQL EXCEPTION");    
        pw.println("TRY AGAIN");
    } catch(Exception e) {
        pw.println("can't load driver"+e.getMessage());
    }
}

这是我的 HTML 代码:

</table>
</td>

<td width="75%" align="center">
    <h2>New Course Details</h2>
    <form name="facreg" onsubmit="return check()" action="./inscourse" method="post">
        <table width="500" height="30" border="0">
            <tr>
                <td>
                    <center>courseid</center>
                </td>
                <td>
                    <input id="courseid" name="courseid" type="text" size="50" maxlength="100" value="">
                </td>
            </tr>
            <tr>
                <td>
                    <center>coursename</center>
                </td>
                <td>
                    <input id="couname" name="couname" type="text" size="50" maxlength="100" value="">
                </td>
            </tr>
            <tr>
                <td>StartingDate</td>
                <td>
                    <select name="sday" size="">
                        <option value=01>1</option>
                        <option value=02>2</option>
                        <option value=03>3</option>
                        <option value=04>4</option>
                        <option value=05>5</option>
                        <option value=06>6</option>
                        <option value=07>7</option>
                        <option value=08>8</option>
                        <option value=09>9</option>
                        <option value=10>10</option>
                        <option value=11>11</option>
                        <option value=12>12</option>
                        <option value=13>13</option>
                        <option value=14>14</option>
                        <option value=15>15</option>
                        <option value=16>16</option>
                        <option value=17>17</option>
                        <option value=18>18</option>
                        <option value=19>19</option>
                        <option value=20>20</option>
                        <option value=21>21</option>
                        <option value=22>22</option>
                        <option value=23>23</option>
                        <option value=24>24</option>
                        <option value=25>25</option>
                        <option value=26>26</option>
                        <option value=27>27</option>
                        <option value=28>28</option>
                        <option value=29>29</option>
                        <option value=30>30</option>
                        <option value=31>31</option>
                    </select>&nbsp;&nbsp;&nbsp;&nbsp;
                    <select name="smonth" size="">
                        <option value="Jan">Jan</option>
                        <option value="Feb">Feb</option>
                        <option value="Mar">Mar</option>
                        <option value="Apr">Apr</option>
                        <option value="May">May</option>
                        <option value="Jun">Jun</option>
                        <option value="Jul">Jul</option>
                        <option value="Aug">Aug</option>
                        <option value="Sep">Sep</option>
                        <option value="Oct">Oct</option>
                        <option value="Nov">Nov</option>
                        <option value="Dec">Dec</option>
                    </select>&nbsp;&nbsp;&nbsp;&nbsp;
                    <input id="syear" name="syear" type="text" size="8" maxlength="4" value="" onkeypress=checknumeric()>(yyyy)&nbsp;&nbsp;&nbsp;&nbsp;
                </td>
            </tr>
            <tr>
                <td>EndingDate</td>
                <td>
                    <select name="eday" size="">
                        <option value=01>1</option>
                        <option value=02>2</option>
                        <option value=03>3</option>
                        <option value=04>4</option>
                        <option value=05>5</option>
                        <option value=06>6</option>
                        <option value=07>7</option>
                        <option value=08>8</option>
                        <option value=09>9</option>
                        <option value=10>10</option>
                        <option value=11>11</option>
                        <option value=12>12</option>
                        <option value=13>13</option>
                        <option value=14>14</option>
                        <option value=15>15</option>
                        <option value=16>16</option>
                        <option value=17>17</option>
                        <option value=18>18</option>
                        <option value=19>19</option>
                        <option value=20>20</option>
                        <option value=21>21</option>
                        <option value=22>22</option>
                        <option value=23>23</option>
                        <option value=24>24</option>
                        <option value=25>25</option>
                        <option value=26>26</option>
                        <option value=27>27</option>
                        <option value=28>28</option>
                        <option value=29>29</option>
                        <option value=30>30</option>
                        <option value=31>31</option>
                    </select>&nbsp;&nbsp;&nbsp;&nbsp;
                    <select name="emonth" size="">
                        <option value="Jan">Jan</option>
                        <option value="Feb">Feb</option>
                        <option value="Mar">Mar</option>
                        <option value="Apr">Apr</option>
                        <option value="May">May</option>
                        <option value="Jun">Jun</option>
                        <option value="Jul">Jul</option>
                        <option value="Aug">Aug</option>
                        <option value="Sep">Sep</option>
                        <option value="Oct">Oct</option>
                        <option value="Nov">Nov</option>
                        <option value="Dec">Dec</option>
                    </select>&nbsp;&nbsp;&nbsp;&nbsp;
                    <input id="eyear" name="eyear" type="text" size="8" maxlength="4" value="" onkeypress=checknumeric()>(yyyy)&nbsp;&nbsp;&nbsp;&nbsp;
                </td>
            </tr>
            <tr>
                <td>
                    <center>duration</center>
                </td>
                <td>
                    <input id="duration" name="duration" type="text" size="50" maxlength="100" value="">
                </td>
            </tr>
            <tr>
                <td>
                    <center>Fee</center>
                </td>
                <td>
                    <input id="fee" name="fee" type="text" size="50" maxlength="100" value="" onkeypress="checknumeric()">
                </td>
            </tr>
            <tr>
                <td colspan=2>
                    <center>
                        <input name="submit" type="submit" value="SUBMIT">
                        <input name="reset" type="reset" value="RESET">
                </td>
            </tr>
        </table>
    </form>
</td>
</tr>
</table>

当我运行这段代码时: 我收到以下错误:

Jul 19, 2014 11:36:18 AM org.apache.catalina.loader.WebappClassLoader loadClass
INFO: Illegal access: this web application instance has been stopped already.  Could not load java.net.BindException.  The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1588)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    at com.mysql.jdbc.SQLError.createLinkFailureMessageBasedOnHeuristics(SQLError.java:1275)
    at com.mysql.jdbc.exceptions.jdbc4.CommunicationsException.<init>(CommunicationsException.java:60)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1118)
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3321)
    at com.mysql.jdbc.MysqlIO.quit(MysqlIO.java:1667)
    at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4322)
    at com.mysql.jdbc.ConnectionImpl.cleanup(ConnectionImpl.java:1348)
    at com.mysql.jdbc.ConnectionImpl.finalize(ConnectionImpl.java:2679)
    at java.lang.System$2.invokeFinalize(Unknown Source)
    at java.lang.ref.Finalizer.runFinalizer(Unknown Source)
    at java.lang.ref.Finalizer.access$100(Unknown Source)
    at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)
    Jul 19, 2014 11:36:18 AM org.apache.catalina.loader.WebappClassLoader loadClass
    INFO: Illegal access: this web application instance has been stopped already.  Could not load   com.mysql.jdbc.ProfilerEventHandlerFactory.  The eventual following stack trace is caused by an  error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
    java.lang.IllegalStateException
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1588)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4346)
    at com.mysql.jdbc.ConnectionImpl.cleanup(ConnectionImpl.java:1348)
    at com.mysql.jdbc.ConnectionImpl.finalize(ConnectionImpl.java:2679)
    at java.lang.System$2.invokeFinalize(Unknown Source)
    at java.lang.ref.Finalizer.runFinalizer(Unknown Source)
    at java.lang.ref.Finalizer.access$100(Unknown Source)
    at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)

而且我的数据库也没有更新。 谁能告诉我我在哪里做错了?我该如何解决?

【问题讨论】:

  • 显示 SQLException。
  • 只是 SQLException 没有用,给我们看它显示的消息。
  • 能否将 SQL Exception 的 catch 块改为读取 pw.println("SQL EXCEPTION "+e.getMessage()); 并在此处发布结果?这将有助于人们了解异常的实际含义。
  • 我变了。现在它显示如下... 信息:非法访问:此 Web 应用程序实例已被停止。无法加载 com.mysql.jdbc.ProfilerEventHandlerFactory。最终的后续堆栈跟踪是由出于调试目的引发的错误以及试图终止导致非法访问的线程引起的,并且没有功能影响。 java.lang.IllegalStateException
  • 我最疯狂的猜测是您正在尝试将字符串值设置为 courseId。第一个值不应被单引号括起来。插入语句中的最后两个字段也可能存在问题。 P.S:不要只更改 println 行。也更改 executeUpdate 行

标签: java mysql jsp servlets


【解决方案1】:

你得到的 coursename 为空值,你必须更改这行 servlet 代码

   String coursename=req.getParameter("coursename");

有了这个

   String coursename=req.getParameter("couname");

检查你的html代码你会得到原因

【讨论】:

  • 请停止在同一个问题上发布三次,而是编辑答案同样,对于您提出的任何新更新:-) +1 不过,对于这个答案,似乎这是目标。
  • @nIcEcOw 感谢您的 +1,我会在以后处理它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-05
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多