这是发生问题的那段代码:
for (int iCount = 0; iCount < listVhmRundownData.size(); iCount++) {
List listVhm = (List) listVhmRundownData.get(iCount);
for (int iNum = 0; iNum < listVhm.size(); iNum++) {
//选出记录集中的每条记录做插入或者更新处理
OdrMakeRundownDataStruct stcVhcRundownData =
(OdrMakeRundownDataStruct) listVhm.get(iNum); StringBuffer strBufSql = new StringBuffer(1000);
strBufSql.append("SELECT UPDATECOUNT ");
if (strDlrCode.equals("")) {
strBufSql.append("FROM DST_RUNDOWNVNM_F ");
}
else {
strBufSql.append("FROM DST_SIMRUNDOWNVNM_F ");
}
strBufSql.append("WHERE ");
strBufSql.append("DLRCODE = '");
strBufSql.append(cmnFunction.
addQuota(stcVhcRundownData.strDlrCode));
strBufSql.append("' AND TGTYEAR = ");
strBufSql.append(stcVhcRundownData.strTgtYear);
strBufSql.append(" AND TGTMONTH = ");
strBufSql.append(stcVhcRundownData.strTgtMonth);
strBufSql.append(" AND VHCNAMECODE = '");
strBufSql.append(cmnFunction.
addQuota(stcVhcRundownData.strVhcNameCode));
strBufSql.append("' FOR UPDATE");
System.out.println(strBufSql.toString()); // SQL执行
stmt.execute(strBufSql.toString()); ResultSet rset = stmt.getResultSet();
System.out.println("sql success!"); if (rset.next()) {
//取出updatecount,并做加1处理
String UpdateCount = cmnFunction.
isNullToZero(rset.getString("UPDATECOUNT"));
int update = (Integer.parseInt(UpdateCount) + 1) % 1000;
stcVhcRundownData.strUpdateCount = String.valueOf(
update);
rset.close();
if (strDlrCode.equals("")) {
//Rundown型式表中存在对应的记录,做更新操作
doUpdateRundown(stmt, 1, stcVhcRundownData, iCount);
}
else {
doUpdateRundown(stmt, 3, stcVhcRundownData, iCount);
}
}
else {
rset.close();
if (strDlrCode.equals("")) {
//Rundown型式表中不存在对应的记录,做插入操作
doInsertRundown(stmt, 1, stcVhcRundownData);
}
else {
doInsertRundown(stmt, 3, stcVhcRundownData);
}
}
}
}
它是在批量插入数据时发生的问题,就是在插入几次数据以后,在作select查询时发生的问题。
for (int iCount = 0; iCount < listVhmRundownData.size(); iCount++) {
List listVhm = (List) listVhmRundownData.get(iCount);
for (int iNum = 0; iNum < listVhm.size(); iNum++) {
//选出记录集中的每条记录做插入或者更新处理
OdrMakeRundownDataStruct stcVhcRundownData =
(OdrMakeRundownDataStruct) listVhm.get(iNum); StringBuffer strBufSql = new StringBuffer(1000);
strBufSql.append("SELECT UPDATECOUNT ");
if (strDlrCode.equals("")) {
strBufSql.append("FROM DST_RUNDOWNVNM_F ");
}
else {
strBufSql.append("FROM DST_SIMRUNDOWNVNM_F ");
}
strBufSql.append("WHERE ");
strBufSql.append("DLRCODE = '");
strBufSql.append(cmnFunction.
addQuota(stcVhcRundownData.strDlrCode));
strBufSql.append("' AND TGTYEAR = ");
strBufSql.append(stcVhcRundownData.strTgtYear);
strBufSql.append(" AND TGTMONTH = ");
strBufSql.append(stcVhcRundownData.strTgtMonth);
strBufSql.append(" AND VHCNAMECODE = '");
strBufSql.append(cmnFunction.
addQuota(stcVhcRundownData.strVhcNameCode));
strBufSql.append("' FOR UPDATE");
System.out.println(strBufSql.toString()); // SQL执行
stmt.execute(strBufSql.toString()); ResultSet rset = stmt.getResultSet();
System.out.println("sql success!"); if (rset.next()) {
//取出updatecount,并做加1处理
String UpdateCount = cmnFunction.
isNullToZero(rset.getString("UPDATECOUNT"));
int update = (Integer.parseInt(UpdateCount) + 1) % 1000;
stcVhcRundownData.strUpdateCount = String.valueOf(
update);
rset.close();
if (strDlrCode.equals("")) {
//Rundown型式表中存在对应的记录,做更新操作
doUpdateRundown(stmt, 1, stcVhcRundownData, iCount);
}
else {
doUpdateRundown(stmt, 3, stcVhcRundownData, iCount);
}
}
else {
rset.close();
if (strDlrCode.equals("")) {
//Rundown型式表中不存在对应的记录,做插入操作
doInsertRundown(stmt, 1, stcVhcRundownData);
}
else {
doInsertRundown(stmt, 3, stcVhcRundownData);
}
}
}
}
它是在批量插入数据时发生的问题,就是在插入几次数据以后,在作select查询时发生的问题。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货