在Java中的if语句中使用方法的结果

时间:2018-01-18 21:14:39

标签: java methods

首先,我只想说我对Java比较新。我遇到了一些问题,想知道是否有人可以帮助我。这是我的代码:

if (rs1.getString("Active_Status")!=("Y")) {

CompleteRecord record = getCompleteRecord();

String insertQuery = String.format("Insert into YMAGRMLNUP %s %s %s %s %s %s %s %s %s %s", 
                    record.getPROCURE_GROUP(), record.getAGREEMENT_REF(), 
                    record.getVENDOR(), record.getPURCH_FR_LOC(), 
                    record.getLINE_NBR(), record.getITEM(),
                    record.getVEN_ITEM(), record.getFC_CODE(), 
                    record.getR_STATUS(), record.getPROCESS_TS()); 
                    executeQuery(insertQuery); 
}
public CompleteRecord getCompleteRecord(String PROCURE_GROUP, String FC_CODE)
   Connection conn = null;
   PreparedStatement psV = null;
   ResultSet rsV = null;
   DSConnection dsc = new DSConnection(); 

try {
       String getValues = "SELECT POVAGRMTHD.PROCURE_GROUP, 
       POVAGRMTHD.VEN_AGRMT_REF, POVAGRMTHD.VENDOR, POVAGRMTHD.PURCH_FR_LOC, 
       POVAGRMTLN.LINE_NBR, POVAGRMTLN.ITEM, POVAGRMTLN.VEN_ITEM, 
       POVAGRMTHD.R_STATUS " +
       " FROM " +  dbProperties.getProperty("Schema") + 
       ".POVAGRMTHD, " + dbProperties.getProperty("Schema") + ".POVAGRMTLN " +
       " WHERE POVAGRMTHD.VEN_AGRMT_REF = POVAGRMTLN.VEN_AGRMT_REF 
       and POVAGRMTHD.PROCURE_GROUP = POVAGRMTLN.PROCURE_GROUP";
           Date today = new Date();
           Timestamp ts = new Timestamp(today.getTime());

           System.out.println(getValues);
           logger.debug("sql=" + getValues);
           conn = dsc.getConnection();

           psV = conn.prepareStatement(getValues);
           rsV = psV.executeQuery();

    while(rsV.next()){

        PovagrmthdDbo aPovagrmthdDbo = new PovagrmthdDbo();
        PovagrmtlnDbo aPovagrmtlnDbo = new PovagrmtlnDbo();
        aPovagrmthdDbo.setProcure_Group(rsV.getString("PROCURE_GROUP"));
        aPovagrmthdDbo.setVen_Agrmt_Ref(rsV.getString("VEN_AGRMT_REF"));
        aPovagrmthdDbo.setVendor(rsV.getString("VENDOR"));
        aPovagrmthdDbo.setPurch_Fr_Loc(rsV.getString("PURCH_FR_LOC"));
        aPovagrmtlnDbo.setLine_Nbr(rsV.getInt("LINE_NBR"));
        aPovagrmtlnDbo.setItem(rsV.getString("ITEM"));
        aPovagrmtlnDbo.setVen_Item(rsV.getString("VEN_ITEM"));
        aPovagrmthdDbo.setR_Status(rsV.getInt("R_STATUS"));

        CompleteRecord record = new 
        CompleteRecord(rsV.getString("PROCURE_GROUP"), 
        rsV.getString("AGREEMENT_REF"),
        rsV.getString("VENDOR"), rsV.getString("PURCH_FR_LOC"), 
        rsV.getInt("LINE_NBR"), rsV.getString("ITEM"),
        rsV.getString("VEN_ITEM"), FC_CODE, rsV.getInt("R_STATUS"), 
        ts.toString());
    }

我尝试做的是在我的CompleteRecord方法中从SQL查询构建记录,然后在我的main方法中使用if语句。如果Active_Status不是Y,我会将此行插入YMAGRMLNUP表。我的问题是我不确定如何从CompleteRecord获取结果并在if语句下使用它们。如果FC_CODE在同一Active_Status语句中不是Y,我还需要将if设置为“H”。非常感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:0)

所以第一个问题是你需要返回CompleteRecord对象。您应该在这里收到编译错误吗? Hrrmm。此外,假设您只有一个查询结果?

CompleteRecord record = null;//move declaration outside of loop
while(rsV.next()){

    PovagrmthdDbo aPovagrmthdDbo = new PovagrmthdDbo();
    PovagrmtlnDbo aPovagrmtlnDbo = new PovagrmtlnDbo();
    aPovagrmthdDbo.setProcure_Group(rsV.getString("PROCURE_GROUP"));
    aPovagrmthdDbo.setVen_Agrmt_Ref(rsV.getString("VEN_AGRMT_REF"));
    aPovagrmthdDbo.setVendor(rsV.getString("VENDOR"));
    aPovagrmthdDbo.setPurch_Fr_Loc(rsV.getString("PURCH_FR_LOC"));
    aPovagrmtlnDbo.setLine_Nbr(rsV.getInt("LINE_NBR"));
    aPovagrmtlnDbo.setItem(rsV.getString("ITEM"));
    aPovagrmtlnDbo.setVen_Item(rsV.getString("VEN_ITEM"));
    aPovagrmthdDbo.setR_Status(rsV.getInt("R_STATUS"));

    record = new 
    CompleteRecord(rsV.getString("PROCURE_GROUP"), 
    rsV.getString("AGREEMENT_REF"),
    rsV.getString("VENDOR"), rsV.getString("PURCH_FR_LOC"), 
    rsV.getInt("LINE_NBR"), rsV.getString("ITEM"),
    rsV.getString("VEN_ITEM"), FC_CODE, rsV.getInt("R_STATUS"), 
    ts.toString());
}
return record;

同时更改此第一行

if (rs1.getString("Active_Status")!=("Y")) {

到这个

if (!rs1.getString("Active_Status").equals("Y")) {

答案 1 :(得分:0)

这显然不是工作代码,或者至少不是全部代码,所以我做了一些假设。我假设类CompleteRecord是您创建的一个类,它具有一组属性,用于包含查询中结果行的字段,而CompleteRecord有一个构造函数,它将这些属性的值作为参数。我假设您正在询问如何访问这些属性的基本问题。

有两种方法:

(1)您可以为每个属性创建一个CompleteRecord方法,以检索该属性:例如

void String getVendor() {
    return vendor;
}

然后,具有CompleteRecord实例的代码将通过调用检索属性:

String theVendor = record.getVendor();

(2)您可以直接进入酒店。通过不将CompleteRecord中的属性声明为私有来执行此操作,如果要在包外部进行访问,则将其声明为public。然后您可以直接进入酒店:

String theVendor = record.vendor;