首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要修改Imp代码

需要修改Imp代码
EN

Stack Overflow用户
提问于 2013-12-27 17:02:10
回答 2查看 56关注 0票数 0

下面的代码需要修改,我们可以使用常量文件吗?如果可以,那么我们如何在单独的文件中分离字符串,这样循环就会继续,那么性能就不会受到影响

代码语言:javascript
复制
for (int j = 0; j < subconfigListRLC.size(); j++) {
    StringBuffer sqlQuery = new StringBuffer();
    test = (SubConfigurationDetailsObject) subconfigListRLC.get(j);
    if (test.getFlag().equalsIgnoreCase("T")) {
        sqlQuery = sqlQuery.append("update SUB_CONFIG set TSTED = " 
                + test.getSubConfigurationIndexNo() + " , Q_SUB_INDX = 0 "
                + "where BASE_ENG_KEY = '" + test.getBaseEngineKey() + "' "
                + "AND MODEL_YEAR = '" + modelYear + "' "
                + "AND RLHP_LVW = '" + test.getRoadLoadHorsepowerValue() + "' "
                + "AND LVW_TEST_WT_WO_CONT = '" + test.getEtwValue() + "' "
                + "AND INERTIA_WT_CLASS = '" + test.getInertiaWeightClassNo() + "' "
                + "AND TEST_GROUP_ID = " + test.getTestGroupId() + " "
                + "AND ENGINE_CODE = '" + test.getEngineCode() + "' "
                + "AND AXLE_RATIO = '" + test.getAxleRatioValue() + "'");
    } else if (test.getFlag().equalsIgnoreCase("U")) {
        sqlQuery = sqlQuery.append("update SUB_CONFIG set Q_SUB_INDX = " 
                + test.getSubConfigurationIndexNo() + " "
                + "where BASE_ENG_KEY = '" + test.getBaseEngineKey() + "' "
                + "AND MODEL_YEAR = '" + modelYear + "' "
                + "AND RLHP_LVW = '" + test.getRoadLoadHorsepowerValue() + "' "
                + "AND LVW_TEST_WT_WO_CONT = '" + test.getEtwValue() + "' "
                + "AND INERTIA_WT_CLASS = '" + test.getInertiaWeightClassNo() + "' "
                + "AND TEST_GROUP_ID = " + test.getTestGroupId() + " "
                + "AND ENGINE_CODE = '" + test.getEngineCode() + "' "
                + "AND AXLE_RATIO = '" + test.getAxleRatioValue() + "'");
    }
    //System.out.println("Query----------->"+sqlQuery.toString());
    processor.getUpdateAccessor().executeUpdateSql(sqlQuery.toString());
}
EN

回答 2

Stack Overflow用户

发布于 2013-12-27 17:22:59

使用Java PreparedStatement来构建查询。然后,可以将PreparedStatement的查询字符串存储在属性文件中。在进入循环之前将两个可能的查询字符串读取到变量中(实际上,您可能希望在进入循环之前构建这两个PreparedStatements -这取决于您是否总是同时使用它们)。然后,您可以调用clearParamaters,然后设置新参数、执行、重复。

票数 1
EN

Stack Overflow用户

发布于 2013-12-27 17:23:07

当你询问确切的细节时,就像这样。在PreparedStatement上搜索javadoc。Javadoc总是值得一读。

代码语言:javascript
复制
String sql = "update SUB_CONFIG set TSTED = ? , Q_SUB_INDX = ? " +
    "where BASE_ENG_KEY = ? " +
    "AND MODEL_YEAR = ? " +
    "AND RLHP_LVW = ? " +
    "AND LVW_TEST_WT_WO_CONT = ? " +
    "AND INERTIA_WT_CLASS = ? " +
    "AND TEST_GROUP_ID = ? " +
    "AND ENGINE_CODE = ? " +
    "AND AXLE_RATIO = ?");
PreparedStatement statement = connection.createPreparedStatement(sql);
for (SubConfigurationDetailsObject test: subconfigListRLC) {
    if (test.getFlag().equalsIgnoreCase("T")) {
        statement.setIntParam(1, test.getSubConfigurationIndexNo());
        statement.setIntParam(2, 0);
    } else if (test.getFlag().equalsIgnoreCase("U")) {
        statement.setIntParam(1, 0);
        statement.setIntParam(2, test.getSubConfigurationIndexNo());
    } else {
        continue;
    }
    statement.set...Param(3, ...);
    ...
    statement.executeUpdate();
 }

您可能只需要一个PreparedStatement,结果确实更快。顺便说一句。最好使用StringBuilder而不是StringBuffer。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20797752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档