首先,我只想说我对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”。非常感谢任何帮助,谢谢!
答案 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;