gpt4 book ai didi

java - executeUpdate() 总是返回 1

转载 作者:太空宇宙 更新时间:2023-11-04 13:02:36 25 4
gpt4 key购买 nike

我试图通过 AJAX 调用 servlet 来编辑 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 retrieving Server Details]"+e.getMessage());
throw e;
}
return ret;
}

有时它的返回值为0,但这种情况很少见。但是一旦它返回 0,即使我重新输入正确的条目,它也总是给出 0

最佳答案

您的错误java.sql.SQLException:ORA-12899:列“INFRAJEWL”的值太大。“ENV_MOTS_DETAILS_NEW”。“ADMIN_PWD”是由

引起的
 ps.setString(6,password);

password 中包含的字符串比表中定义的 ADMIN_PWD 列长。

检查表定义并检查您的密码长度。

返回值 0 只是表明:没有更新任何行,而返回值 1 则标识“1”行已更新。由于您的 ENV_ID 很可能是表的主键,因此您永远不会看到任何其他值是完全可以的。

注意:您可以更新 0 行,并且该语句工作正常。当更新没有更改数据时就会出现这种情况(值与之前相同)

通过编写 try-with-resource 风格,您可以删除对变量 ret 的依赖,在出现异常时始终返回 0:

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 = ?";

try(Connection con = db.getConnection();
ps = con.prepareStatement(query)) {
log.info("[Editconsole Method Call Query]"+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);

int numAffected = ps.executeUpdate();
log.info("Statement affected " + numAffected + " rows");
return 1; //Worked.

}
catch (Exception e) {
log.fatal("[SQL Exception in retrieving Server Details]"+e.getMessage());
}
return 0;
}

关于java - executeUpdate() 总是返回 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34810885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com