使用 ifelse 语句修改 JSTL 中的代码
Modifying code in JSTL using ifelse statement
<%
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>
如上图我差不多做到了。但我有点卡在检查数据库重复条目的代码中。任何帮助表示赞赏。提前致谢
看看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>
<%
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>
如上图我差不多做到了。但我有点卡在检查数据库重复条目的代码中。任何帮助表示赞赏。提前致谢
看看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>