java - 再次调用同一页面不会将数据添加到数据库

标签 java mysql jsp javabeans

我有一个 jsp 页面,它获取两个参数 1 用于添加另一个以供查看。此 jsp 页面被命名为 sucessAdmin.jsp。我有另一个 jsp 页面 admin1.jsp,它调用 sucessadmin.jsp。 admin1.jsp 有一个表单 View 和 add.so 如果我按下 View 按钮它调用 sucessAdmin.jsp 并显示数据。当我按下添加按钮时,它会显示一个表单来输入数据,但它不会向 mysql 数据库添加值。当我再次调用同一个页面时,它没有添加数据。请告诉我哪里错了

这是 bean

package sucessAdmin;
import java.sql.*;
import java.io.*;
import java.util.*;
public class sucessAdmin {
private String question;
private String answer;

private String questionNo;
private String opt1;
private String opt2;
private String opt3;
private String opt4;
public sucessAdmin()
{

}

public void setQuestion(String question)
{
    this.question=question;
}
public String getQuestion()
{
    return question;
}
public void setAnswer(String answer)
{
    this.answer=answer;
}
public String getAnswer()
{
    return answer;
}
public void setQuestionNo(String questionNo)
{
    this.questionNo=questionNo;
}
public String getQuestionNo()
{
    return questionNo;
}
public void setOpt1(String opt1)
{
this.opt1=opt1;
}
public String getOpt1()
{
    return opt1;
}
public void setOpt2(String opt2)
{
this.opt2=opt2;
}
public String getOpt2()
{
    return opt2;
}
public void setOpt3(String opt3)
{
this.opt3=opt3;
}
public String getOpt3()
{
    return opt3;
}
public void setOpt4(String opt4)
{
this.opt4=opt4;
}
public String getOpt4()
{
    return opt4;
}

    public Vector getDetails()
    {
        int x=0;
        Vector v= new Vector();
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            String url="jdbc:mysql://localhost:3306/Ontest";
            Connection con=DriverManager.getConnection(url,"root","spanwave");
            ResultSet rs=null;
            Statement st=con.createStatement();
            rs=st.executeQuery("select * from questions");
            String quer="SELECT * FROM questions";

                     rs=st.executeQuery(quer);
                    ResultSetMetaData rsmd = rs.getMetaData();
                    int NumOfCol=0;
                    NumOfCol=rsmd.getColumnCount();
                    System.out.println("Query Executed!! No of Colm="+NumOfCol);
            while(rs.next())
            {

                for(int i=1;i<NumOfCol+1;i++)
                {
                    if(i==NumOfCol)
                        {System.out.print(rs.getString(i));System.out.println();}else
                System.out.print(rs.getString(i)+" ");
                    v.addElement(rs.getString(i));
                }


            }

        }
        catch(Exception e)
        {
            System.out.println(e);
        }
        return v;
    }
    public void addDetails(String question,String opt1,String opt2,String opt3,String opt4,String questionNo,String answer)
    //public void addDetails()
    {
        int qnNo=0;

        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            String url="jdbc:mysql://localhost:3306/Ontest";
            Connection con=DriverManager.getConnection(url,"root","spanwave");
            ResultSet rs=null;
            qnNo=Integer.parseInt(questionNo);
            PreparedStatement ptst=con.prepareStatement("insert into questions values(?,?,?,?,?,?,?)");
ptst.setString(1,question );
ptst.setString(2,opt1 );
ptst.setString(3,opt2 );
ptst.setString(4,opt3 );
ptst.setString(5,opt4 );
ptst.setInt(6, qnNo);
ptst.setString(7,answer);
ptst.executeUpdate();

                    int NumOfCol=0;
                    System.out.println("Query Executed!! No of Colm="+NumOfCol);

    }
        catch(Exception e)
        {
            System.out.println(e);
        }


}
}

这是调用页面

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<jsp:useBean id="admin" scope="request" class="admin.adminBean">
<jsp:getProperty property="userId" name ="admin"/>
</jsp:useBean>
<jsp:useBean id="sucessAdmin" scope ="request" class="sucessAdmin.sucessAdmin"></jsp:useBean>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title><jsp:getProperty property="userId" name ="admin"/></title>
</head>
<body bgcolor="pink">
<form action="details.jsp" method="get">
view questions<input type="radio" name="details" value="view"><br>
edit questions
<input type="radio" name="details" value="edit"><br>
add questions

<input type="radio" name="details" value="add"><br>
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>

这是被调用的页面

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ page import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><jsp:useBean id="sucessAdmin" scope ="request" class="sucessAdmin.sucessAdmin">

</jsp:useBean>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Details</title>
</head>
<body>

<%String input; %>
<%=input=request.getParameter("details") %>
<%if (input.equals("view")) {
    %><%Vector v; %>
    <%v=(Vector)sucessAdmin.getDetails();
out.println(sucessAdmin.getDetails()); }
%><%
if(input.equals("add"))
    {out.println("addds");
    %>
    <form method="POST" action="details.jsp">
<table>
<tr>
<td>question<input type="text" name="question" value="" /></td>
</tr>
<tr>
<td>opt1<input type="text" name="opt1" value="" /></td>
</tr>
<tr>
<td>opt2<input type="text" name="opt2" value="" /></td>
</tr>
<tr>
<td>opt3<input type="text" name="opt3" value="" /></td>
</tr>


<tr>
<td>opt4<input type="text" name="opt4" value="" /></td>
</tr>
<tr>
<td>questionNumber<input type="text" name="questionNo" value="" /></td>
</tr>
<tr>
<td>answer<input type="text" name="answer" value="" /></td>
</tr>




</table><br><input type="hidden" name="details"/>
<br><input type="submit" name="submit" value="submit"/>
<%sucessAdmin.addDetails("question","opt1","opt2","opt3","opt4","questionNo","answer");%>
</form>

    <%out.println("adding");}
%>
</body>
</html>

最佳答案

replace <%sucessAdmin.addDetails("question","opt1","opt2","opt3","opt4","questionNo","answer");%>

<% 
      String question = request.getParameter("question");
      String opt1= request.getParameter("opt1");
      String opt2 = request.getParameter("opt2");
      String opt3 = request.getParameter("opt3");
      String opt4 = request.getParameter("opt4");
      String questionNo = request.getParameter("questionNo");
      String answer = request.getParameter("answer");
      if(question!=null && opt1!=null && opt2 != null
         opt3!=null && opt4 !=null && questionNo!=null && answer!=null) 
      {
           sucessAdmin.addDetails(question,opt1,opt2,opt3,opt4,questionNo,answer);
       }
   %>

试试这个,希望它能奏效..

关于java - 再次调用同一页面不会将数据添加到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15171238/

相关文章:

java - Spring Tomcat和静态资源和mvc :resources

java - Spring MVC - 多部分表单数据

java - 在 CentOS 6.5 32 位上安装 32 位 Java JDK

mysql - 如何最好地解释 SQL 中的标志列

java - 使用抽象类对列表进行排序

mysql - 如何让MySQL Workbench忘记我重命名了一个表?

mysql - 使用两个 ROW 值的合并更新 mysql 列

java - 是否有任何正确的解决方案来获取和保存印地语字符并将这些字符显示到 jsp 页面?

java - Java 中的 native 方法是什么,应该在哪里使用它们?

java - 如何使用一个属性检索类实例