我的 jsp 中有一个更新语句。问题是,当我更改jsp中的整个字段并执行更新语句时,数据库将被更新,但是当我更新某个字段时,其他字段将在SQL语句中为“”。另外,我遇到的问题是日期不匹配,所以在我的 jsp 中的 SQL 语句中应用的最佳格式是什么。
对于第一个问题: HTML 代码:
<select size="1" name="Nationality" class="content">
<option selected value="<%=Nationality%>"><%=Nationality%></option>
<%
try
{
ResultSet rs=null;
Statement st1=null;
String query = "select country_code, nationality_name from nationality_lkup ";
st1 = conn1.createStatement();
rs = st1.executeQuery(query);
while(rs.next())
{
%>
<option value="<%=rs.getString("country_code")%>" >
<%=rs.getString("nationality_name")%></option>
<%
}
}
catch (Exception e) {
e.printStackTrace();
}
%>
</select>
更新语句为:
String sz_SQLUpdate = "UPDATE cir SET";
z_SQLUpdate = sz_SQLUpdate + " , nationality ='"+Nationality+"'";
另外,更新语句中的日期格式如何处理?
最佳答案
but when I am updating a certain field, the other fields will be "" in the SQL statement.
我不确定这是否是完整的代码(到目前为止显示的 SQL 在执行时会产生 SQL 语法异常),但您至少不应该在 SET
和第一列名称。
如果 SQL 实际上在语法上是有效的,那么它可能只是意味着当您在 SQL 语句中内联访问这些变量时它们是空的。您应该预先填充这些变量,或者如果不需要更新相关列,则将其远离 SQL 查询。
Also, I am having a problem is that I am having a miss match in the date, so what is the best format to be applied in the SQL statement in my jsp.
最好的方法是不用担心格式,只需使用 PreparedStatement#setTimestamp()
设置一个代表 SQL 语句中时间戳的完整 Java 对象即可。 。另请参阅此 recent question .
也就是说,代码中有两个主要问题。
应避免 JSP 文件中的原始 Java 代码。它只会给你带来各种麻烦,不仅对你,而且对别人,现在和将来。
此 SQL 对 SQL injection 敏感attacks而且JDBC代码容易出现资源泄漏。
解释如何正确做事将是一个很长的故事,因此这里只是一些链接,您可以仔细浏览,以便您了解如何正确做事。
- Beginning and intermediate JSP/Servlet tutorials
- How to avoid Java code in JSP files
- JSP/Servlet best practices
- Using prepared statements in JDBC
您可能应该扔掉您当前正在阅读的老式 JSP 教程/书籍。
关于java - 如何在我的jsp中使用update语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3330787/