【问题标题】:Modifying code in JSTL using ifelse statement使用 ifelse 语句修改 JSTL 中的代码
【发布时间】:2018-06-22 16:29:58
【问题描述】:
  <% 
  try
  {
  Class.forName("com.mysql.jdbc.Driver").newInstance();;
  Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/newschema", "root", "root");
  Statement st = con.createStatement();
  String userid=request.getParameter("userid");
  String name=request.getParameter("name");
  String shift=request.getParameter("shift");
  String role=request.getParameter("role");
  String strQuery = "SELECT COUNT(*) FROM employee WHERE emp_id='"+userid+"'";
  ResultSet rs = st.executeQuery(strQuery);
  rs.next();
  String Countrow = rs.getString(1);
  out.println(Countrow);
  if(Countrow.equals("0"))
  {
   int i=st.executeUpdate("INSERT INTO employee(emp_id,name,shift)VALUES('"+userid+"','"+name+"','"+shift+"')");
   out.println("Data is successfully inserted!");
  }
  else
  {
   out.println("Employee data already exists !");
  }
 }
 catch(Exception e)
 {
  System.out.print(e);
  e.printStackTrace();
 }
 %>

我试图将此代码更改为 JSTL,并尝试使用语法创建 if else 语句。但我不确定如何在 if 语句下执行 SQL 语句。没有下面的if语句就这样做了。

<body>
    <c:if test="${ empty param.userid or empty param.name or empty param.shift}">
        <c:redirect url="insert.jsp" >
            <c:param name="errMsg" value="Please Enter the Details" />
        </c:redirect>
     </c:if>

    <sql:setDataSource var="dbsource" driver="com.mysql.jdbc.Driver"
                       url="jdbc:mysql://localhost/newschema"
                       user="root"  password="root"/>

        //<c:if ....>--?

            <sql:update dataSource="${dbsource}" var="result">
            INSERT INTO employee(emp_id, name, shift) VALUES (?,?,?);
            <sql:param value="${param.userid}" />
            <sql:param value="${param.name}" />
            <sql:param value="${param.shift}" />
        </sql:update>

  <c:when test="${result>=1}">
            <font size="5" color='green'> Data inserted successfully.</font>
            <c:redirect url="insert.jsp" >
                <c:param name="susMsg" value="Data inserted successfully." />
            </c:redirect>

         //<c:otherwise ....>---?

</body>

如上所示,我几乎做到了。但我有点卡在检查数据库中检查重复条目的代码中。任何帮助表示赞赏。提前致谢

【问题讨论】:

    标签: java mysql database-connection jstl


    【解决方案1】:

    查看this page 底部的示例。我没有地方可以测试这个,但我相信它至少应该让你接近。

    <sql:query dataSource="${dbsource}" var="result">
        SELECT COUNT(*) as row_count FROM employee WHERE emp_id = ?;
        <sql:param value="${param.userid}" />
    </sql:query>
    
    <c:choose>
        <c:when test="${result.rows[0].row_count == 0}">
            <sql:update>...</sql:update>
        </c:when>
        <c:otherwise>
            Employee data already exists!
        </c:otherwise>
    </c:choose>
    

    【讨论】:

    • 谢谢@Matt。我明白了!
    猜你喜欢
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多