0

我设计了一个 jsp 页面,我从中将字段值传递给另一个 jsp 页面。在此页面中,我想将值存储在数据库中并根据此页面中的成功或失败显示适当的消息。除了数据没有插入数据库并且没有显示错误消息之外,一切似乎都正常工作。


学生.jsp

<form id="form" method="post" action="students_final.jsp">
  Student name:<input type="text" value="" name="name">
  Reg no:<input type="text" value="" name="regno">
  <input type="submit" value="Register" />
</form>

student_final.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page language="java"%>
<%@page import="java.lang.*" import="java.sql.*"%>

<% 
  try {
    Class.forName("com.mysql.jdbc.Driver");  
    String url="jdbc:mysql://localhost:3306/userdbase";
    Connection connection = DriverManager.getConnection(url, "root", "passwd");  

    String name=request.getParameter("name");
    String regno=request.getParameter("regno");

    "INSERT INTO `schooldatabase`.`test` (`name`) VALUES ('" + name + "');";
    Statement st= connection.createStatement();
    int count=st.executeUpdate(strquery);

    /*ResultSet rs= st.executeQuery(strquery);*/
  }
  catch(Exception e)
  {
    System.out.println("Could not connect");
  }
%>

我知道有一个非常愚蠢的错误。请帮我找出来!!

4

3 回答 3

1

尝试提交事务。自动提交可能是错误的。

您应该使用 PreparedStatement。这是等待发生的 SQL 注入攻击。

您不会关闭任何资源,因此如果您让它工作,这个应用程序将不会运行很长时间。

于 2012-06-12T10:29:48.243 回答
0
String url = "jdbc:mysql://localhost:3306/schooldatabase";

If I'm not mistaken you ran this query in MySQL and as far as I can tell "schooldatabase" is the database name and "test" is the table in it. Also

String query = "INSERT INTO test ('name') VALUES ("+name+")";
int count = st.executeUpdate(query);

This will work.

于 2013-08-18T02:35:48.220 回答
0

"插入schooldatabase. test( name) 值 ('" + 名称 + "');";

将此分配给变量

于 2014-01-17T15:10:19.843 回答