如何使用java JDBC避免重复输入数据库表

时间:2013-05-18 00:27:37

标签: java jdbc jdbc-odbc

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

我可以提取这些列的值并将行插入到DB表中。我很好,直到这里,因为我的查询在计时器上运行了三个小时,这个查询运行,由于这个我得到重复的值到数据库表 - 因为相同的旧查询运行和旧的结果被推入数据库。 / p>

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

代码:

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);

}

1 个答案:

答案 0 :(得分: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);