解决方案 »
- 新手配置spring时出错XmlBeanDefinitionStoreException,求大神解决
- 用XFire+MyEclipse开发Web Service问题求助大虾.急啊
- jbpm4 源码 ,一段关于线程的代码,帮我分析一下.
- hibernate注解entity的问题
- java 数据结构的问题
- 散分,谢恩师
- 在spring+hibernate中怎么会出现Query.list()的异常呢
- There must be a method name element
- userStr=userStr==null?"":userStr.trim()这句java代码什意思
- 用 Cloudscape 数据库的可视工具 Cloudview 创建数据库的问题
- MyEclipse6包层次问题
- 存储过程 中的事务 java
题目和选项一起提交到后台servlet(或另一jsp,不知道你用没用框架,whatever,反正就是处理的servlet)。
然后servlet里面启事务调用存储过程处理好了。
不知道你的什么数据库?oracle支持数组,mysql不支持数组。
启事务调用两个存储过程:public static int insertVersionIncre(String versionId,
List<VersionIncreObj> lst, String userId) throws Exception {
IConnection icon = null;
ICallableStatement cs = null;
int ret = -10000;
try {
icon = DbFactory.getInstance().getConnection(DBI.GLOBAL.DB);
icon.setAutoCommit(false);
cs = icon.prepareCall(proc_ins_version_incre);
// 循环插入增量包记录
for (int i = 0; i < lst.size(); i++) {
VersionIncreObj vio = lst.get(i); cs.setString(1, userId);
cs.setString(2, vio.getIncrementId());
cs.setString(3, vio.getStartId());
cs.setString(4, vio.getEndId());
cs.setString(5, vio.getFilePos());
cs.setBigDecimal(6, new BigDecimal(vio.getFileSize()));
cs.setString(7, vio.getIsSetupVm());
cs.setString(8, vio.getMd5());
cs.registerOutParameter(9, Types.INTEGER);
cs.execute(); ret = cs.getInt(9); if (ret == -1) {
break;
}
}
// 如果失败,则回滚,否则修改状态。
if (ret == -1) {
icon.rollback();
} else {
cs.close();
cs = icon.prepareCall(proc_upd_vb_incre_status);
cs.setString(1, userId);
cs.setString(2, versionId);
cs.setString(3, TYPES.VersionBaseType.YES);
cs.registerOutParameter(4, Types.INTEGER);
cs.execute();
ret = cs.getInt(4);
// 如果修改状态失败,则回滚,否则提交。
if (ret == -1) {
icon.rollback();
} else {
icon.commit();
}
}
} catch (Exception e) {
if (icon != null) {
try {
icon.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
e.printStackTrace();
} finally { if (cs != null) {
try {
cs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (icon != null) {
try {
icon.setAutoCommit(true);
} catch (SQLException e) {
e.printStackTrace();
}
try {
icon.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return ret;
}
添加完毕之后去数据库里找最后添加的一条记录返回ID
然后再添加选项,这样题目的id不就有了吗!!!