我试图通过AJAX调用从JSP页面编辑行到servlet,这进一步转到编辑函数,但 k
的值始终为1 .
这是servlet代码:
try {
k=obj.editportal(env, region, url, user, rnode, password,envid,attuid);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("value of k is = "+k);
if(k==0)
{
res.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
pw.write("Internal server error");
}
else if(k==1)
{
res.setStatus(HttpServletResponse.SC_OK);
pw.write("Row updated Successfully");
}
这是我的Java函数:
try {
Connection con = db.getConnection();
String query = "update ENV_MOTS_DETAILS set " +
"ENV_NAME= ? , CONSOLE_URL= ? , REMOTE_NODE= ? , CONSOLE_TO_LOGON=? , " +
"REGION=? , DELETE_FLAG='Y' , ADMIN_PWD=? , " +
"COMPONENT='' , COMMENTS='' , LAST_UPDATED_BY=?, " +
"LAST_UPDATED_ON=to_date(to_char(SYSDATE,'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS') WHERE ENV_ID = ?";
log.info("[Editconsole Method Call Query]"+query);
ps = con.prepareStatement(query);
ps.setString(1,env);
ps.setString(2,url);
ps.setString(3,rnode);
ps.setString(4,user);
ps.setString(5,region);
ps.setString(6,password);
ps.setString(7,attuid);
ps.setInt(8,envid);
ret=ps.executeUpdate();
ps.close();
//con.commit();
con.close();
}
catch (Exception e)
{
log.fatal("[SQL Exception in Retreving Server Details]"+e.getMessage());
throw e;
}
return ret;
}
有时它会给出返回值 0
,但这种情况很少见 . 但是一旦它返回 0
,它总是给出 0
,即使我重新输入正确的条目,
1 回答
您的错误
java.sql.SQLException: ORA-12899: value too large for column "INFRAJEWL"."ENV_MOTS_DETAILS_NEW"."ADMIN_PWD"
是由在
password
中包含一个字符串,该字符串比表中的ADMIN_PWD
列长,定义为保留 .检查表定义并检查
password
长度 .返回值0只表示:没有更新行,而返回值1表示更新了"1"行 . 由于你的
ENV_ID
很可能是你 table 的主键,所以你绝对没有看到任何其他值 .Note: 您可以更新0行并且语句正常工作 . 当更新没有更改数据时会出现这种情况(与以前相同的值)
通过编写
try-with-resource
样式,您可以删除对变量ret
的依赖,在异常的情况下更多地返回0: