急!(在线等待)sqlserver2000数据库 设置setAutoCommit(false); 在查询了 一个记录后,对其进行修改,在提交事务时显示成功,但实际上没 你在控制台把你执行的sql语句打印出来,也许语句是没问题的,如:delete tablename where 1=2 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 语句没问题,又遇到同样的情况。表T1 表T2 先insert表T1数据,后insert表T2数据,conn.commit();后,只有表T1数据写入,表T2数据没有insert数据? 我的代码如下<%@include file="/include/head/chkusrlogin2.jsp"%><%@ page contentType="text/html; charset=gb2312" %><%@ page import="java.sql.*" %><%@ page import="java.util.*"%><%@ page import="java.util.Date"%><%@include file="/include/tools/Tools.jsp"%><jsp:useBean id="conn" scope="page" class="jcnpc.database.MSqlcon" /><jsp:useBean id="conn1" scope="page" class="jcnpc.database.MSqlcon" /><%if (!conn.Initialization()){ String echo=conn.getHint(); out.print(echo); }else{if (!conn1.Initialization()){ String echo=conn.getHint(); out.print(echo); }else{conn1.setCon();conn.setCon(false);String hmid=request.getParameter("hmid");StringBuffer tmpout=new StringBuffer("");String mid=request.getParameter("mid");String headlist=request.getParameter("headlist");String brief=request.getParameter("brief");String commaddr=request.getParameter("commaddr");String postman=request.getParameter("postman");String title=request.getParameter("title");String con=request.getParameter("con");String rid=request.getParameter("rid");// get date GregorianCalendar rootDate=new GregorianCalendar(); java.util.Date utilDate=rootDate.getTime(); java.sql.Date CurDate = new java.sql.Date(utilDate.getTime()); String cur_date=CurDate.toString();// 在convert里已getISOStr了if (rid==null || rid.equals("") || mid==null || mid.equals("") || headlist==null || headlist.equals("") || brief==null || brief.equals("") || commaddr==null || commaddr.equals("")|| postman==null || postman.equals("")|| title==null || title.equals("")|| con==null || con.equals("") ) {response.sendRedirect("/err.jsp?er=0");return; }else{ tmpout.append( "insert into motion(mid,uid,headlist,brief,commaddr,postman,title,con,ifsend,stime) values(" ); tmpout.append(mid); tmpout.append(","); tmpout.append(uid); tmpout.append(","); tmpout.append(convert(headlist)); tmpout.append(","); tmpout.append(convert(brief)); tmpout.append(","); tmpout.append(convert(commaddr)); tmpout.append(","); tmpout.append(convert(postman)); tmpout.append(","); tmpout.append(convert(title)); tmpout.append(","); tmpout.append(convert(con));; tmpout.append(","); tmpout.append("1"); tmpout.append(","); tmpout.append(convert(cur_date)); tmpout.append( ")" ); String add_sql=tmpout.toString(); tmpout=new StringBuffer(""); conn.executeUpdate(add_sql); ResultSet rs_tmpid=conn1.executeQuery("SELECT IDENT_CURRENT('motion') as tmpid"); String tmpid=""; if (rs_tmpid.next()){ tmpid=rs_tmpid.getString("tmpid"); } rs_tmpid.close(); if (tmpid==null || tmpid.equals("")){ response.sendRedirect("/err.jsp?er=0"); return; }// wr chkrec tmpout.append( "insert into chkrec(pid,sid,iid,incepttime) values(" ); tmpout.append(tmpid); tmpout.append(","); tmpout.append(uid); tmpout.append(","); tmpout.append(rid); tmpout.append(","); tmpout.append(convert(cur_date)); tmpout.append( ")" ); String add_sql1=tmpout.toString(); tmpout=new StringBuffer(""); conn.executeUpdate(add_sql1);%><%=add_sql%><br><%=add_sql1%><% /*if (conn.updateCommit()){%> <script language=jscript> alert("发送成功!"); <%if (hmid==null || hmid.equals("")){ %> window.location="DraftMotionIndex.jsp"; <%}else {%> window.location="DraftMotionIndex.jsp?mid=<%=mid%>"; <%}%> </script><% }else { %><script language=jscript> alert("发送失败!"); window.history.go(-1); </script><%} // if commit */}// chk_nullconn1.closeConn();}//if conn1.initconn.closeConn(); }//if conn.init%> 好像在stmt执行了二次executeUpdate下面是我引用的Bean里的部分程序 Statement stmt; public boolean executeUpdate(String s) { try { stmt = conn.createStatement(); stmt.executeUpdate(s); return true; } catch(SQLException sqlexception) { sHint = "executeUpdate:" + sqlexception.getMessage(); return false; } }请问怎么改动解决了立刻给分 失败应该要有回滚的代码吧 flag1=executeUpdate(....);flag2=executeUpdate(....);if(flag1>0&&flag2>0)//当两个操作都成功时提交生效 con.commit();else con.rollback();//否则回滚 会自动恢复没做任何操作的之前的状态不是你con.setAutoCommit(false);con.commit();用两句话 把操作包起来就有事物功能了 我写了,发现第二个executeUpdate返回的是false,这是为什么?我要的是都能执行 你的代码还是有问题:if (tmpid==null || tmpid.equals("")){ response.sendRedirect("/err.jsp?er=0"); return; }-- return了,怎么提交事务,关闭连接呢? 关于red5在windows下的安装配置部署 websphere 会话超时消息中存在部分无关的文本?? 返回界面时如何清空文本框中的值 在TOMCAT中如何让日志写入文件? 如何用ajax+j2ee解决图片上传? 进来谈谈权限设计 <s:iterator> list集合值赋值到 <s:textfield> 在线等答案 请教一个数据库BEAN问题!100分感谢. 用jsp调用javabean组建出现bug请高手指点 菜鸟遇难题,紧急救助 如何保留小数点一位? 请问solaris9如何安装
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*"%>
<%@ page import="java.util.Date"%>
<%@include file="/include/tools/Tools.jsp"%>
<jsp:useBean id="conn" scope="page" class="jcnpc.database.MSqlcon" />
<jsp:useBean id="conn1" scope="page" class="jcnpc.database.MSqlcon" />
<%
if (!conn.Initialization())
{
String echo=conn.getHint();
out.print(echo);
}else{
if (!conn1.Initialization())
{
String echo=conn.getHint();
out.print(echo);
}else{
conn1.setCon();
conn.setCon(false);
String hmid=request.getParameter("hmid");
StringBuffer tmpout=new StringBuffer("");
String mid=request.getParameter("mid");
String headlist=request.getParameter("headlist");
String brief=request.getParameter("brief");
String commaddr=request.getParameter("commaddr");
String postman=request.getParameter("postman");
String title=request.getParameter("title");
String con=request.getParameter("con");
String rid=request.getParameter("rid");
// get date
GregorianCalendar rootDate=new GregorianCalendar();
java.util.Date utilDate=rootDate.getTime();
java.sql.Date CurDate = new java.sql.Date(utilDate.getTime());
String cur_date=CurDate.toString();
// 在convert里已getISOStr了
if (rid==null || rid.equals("") || mid==null || mid.equals("") || headlist==null || headlist.equals("") || brief==null || brief.equals("") || commaddr==null || commaddr.equals("")|| postman==null || postman.equals("")|| title==null || title.equals("")|| con==null || con.equals("") ) {
response.sendRedirect("/err.jsp?er=0");
return;
}else{
tmpout.append( "insert into motion(mid,uid,headlist,brief,commaddr,postman,title,con,ifsend,stime) values(" );
tmpout.append(mid);
tmpout.append(",");
tmpout.append(uid);
tmpout.append(",");
tmpout.append(convert(headlist));
tmpout.append(",");
tmpout.append(convert(brief));
tmpout.append(",");
tmpout.append(convert(commaddr));
tmpout.append(",");
tmpout.append(convert(postman));
tmpout.append(",");
tmpout.append(convert(title));
tmpout.append(",");
tmpout.append(convert(con));;
tmpout.append(",");
tmpout.append("1");
tmpout.append(",");
tmpout.append(convert(cur_date));
tmpout.append( ")" );
String add_sql=tmpout.toString();
tmpout=new StringBuffer("");
conn.executeUpdate(add_sql); ResultSet rs_tmpid=conn1.executeQuery("SELECT IDENT_CURRENT('motion') as tmpid");
String tmpid="";
if (rs_tmpid.next()){
tmpid=rs_tmpid.getString("tmpid");
}
rs_tmpid.close(); if (tmpid==null || tmpid.equals("")){
response.sendRedirect("/err.jsp?er=0");
return;
}
// wr chkrec
tmpout.append( "insert into chkrec(pid,sid,iid,incepttime) values(" );
tmpout.append(tmpid);
tmpout.append(",");
tmpout.append(uid);
tmpout.append(",");
tmpout.append(rid);
tmpout.append(",");
tmpout.append(convert(cur_date));
tmpout.append( ")" );
String add_sql1=tmpout.toString();
tmpout=new StringBuffer("");
conn.executeUpdate(add_sql1);
%>
<%=add_sql%><br>
<%=add_sql1%>
<%
/*
if (conn.updateCommit())
{%>
<script language=jscript>
alert("发送成功!");
<%if (hmid==null || hmid.equals("")){ %>
window.location="DraftMotionIndex.jsp";
<%}else {%>
window.location="DraftMotionIndex.jsp?mid=<%=mid%>";
<%}%>
</script>
<%
}else { %>
<script language=jscript>
alert("发送失败!");
window.history.go(-1);
</script>
<%} // if commit
*/
}// chk_null
conn1.closeConn();
}//if conn1.init
conn.closeConn();
}//if conn.init
%>
下面是我引用的Bean里的部分程序 Statement stmt;
public boolean executeUpdate(String s)
{
try
{
stmt = conn.createStatement();
stmt.executeUpdate(s);
return true;
}
catch(SQLException sqlexception)
{
sHint = "executeUpdate:" + sqlexception.getMessage();
return false;
}
}请问怎么改动
解决了立刻给分
flag1=executeUpdate(....);
flag2=executeUpdate(....);
if(flag1>0&&flag2>0)//当两个操作都成功时提交生效
con.commit();
else
con.rollback();//否则回滚 会自动恢复没做任何操作的之前的状态不是你con.setAutoCommit(false);con.commit();用两句话 把操作包起来就有事物功能了
if (tmpid==null || tmpid.equals("")){
response.sendRedirect("/err.jsp?er=0");
return;
}-- return了,怎么提交事务,关闭连接呢?