0

我正在将行插入到我在数据库上手动创建的 oracle 表的列中,其中列名的数量和 XML 文件中的顺序。XML 被视为配置文件,因此用户可以根据业务需要管理列并更新它们。我的 java 代码读取 XML 文件并从 XML 和通过 Document(内容管理技术)API 提取列名。

我可以提取这些列的值并将这些行插入到数据库表中。直到这里我都很好,因为我的查询在计时器上运行了三个小时,所以这个查询运行,因此我将重复的值放入数据库表中——因为相同的旧查询运行并且旧结果被推送到数据库中。

我需要避免这种情况,如果有人可以帮助我,那就太好了。

代码:

String rObjectIdCheck = null;
pSelect = dbConn.prepareStatement("select r_object_id from financial_data");

ResultSet rsSelect = pSelect.executeQuery();

while(rsSelect.next()){

    rObjectIdCheck =(String)rsSelect.getObject("r_object_id");


    System.out.println("The OBJECTID from DB is:"+rObjectIdCheck); 
    System.out.println("The ObjectID from DCTM extract:"+rObjectID);

    if (rObjectIdCheck!=rObjectID) {

        pStmt = dbConn.prepareStatement("insert into financial_data ("+sbAttrName.toString()+")" + "values" +"("+sbAttrValue.toString()+")");

        pStmt.addBatch();
        pStmt.executeBatch(); 
    } 

}
sbAttrValue.delete(0, iSBValue);
sbAttrName.delete(0,iSBName);

}
4

1 回答 1

0

您的 MERGE 语法不正确。它应该看起来更像以下内容。您应该检查以确保您输入了正确的变量。

String query = "MERGE INTO financial_data a using dual ON(a.r_object_id="+rObjectID+")" +
    "WHEN MATCHED THEN UPDATE SET "+sbAttrName.toString()+"="+sbAttrValue.toString()+ 
    "WHEN NOT MATCHED THEN insert ("+sbAttrName.toString()+")" +
    "values" +"("+sbAttrValue.toString()+")";
dbConn.prepareStatement(query); 
于 2013-05-20T17:17:53.200 回答