Java 如何使用WHERE子句过滤出重复数据,而无需硬编码?
好几天来,我一直坐在这里,在网上到处搜索,但都没有找到正确的答案Java 如何使用WHERE子句过滤出重复数据,而无需硬编码?,java,sql,Java,Sql,好几天来,我一直坐在这里,在网上到处搜索,但都没有找到正确的答案 Connection connection = super.getEnvironment().getConnection(); PreparedStatement preparedStatement = null; String insertScript = null; String skipScript = null; //ResultSet incomeSet
Connection connection = super.getEnvironment().getConnection();
PreparedStatement preparedStatement = null;
String insertScript = null;
String skipScript = null;
//ResultSet incomeSet;
ArrayList<String> rowVals = new ArrayList();
ArrayList<String> dbList = new ArrayList<String>();
ArrayList<String> incomeList = new ArrayList<String>();
String tempVal = null;
skipScript = "select unique_ref, message_id, event_id from InboundCorres " +
"where message_id = " +
"";
preparedStatement = connection.prepareStatement(skipScript);
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println(rowVals.toString());
}
//List<String> incomeList = Arrays.asList(dataItems);
insertScript = "INSERT INTO INBOUNDCORRES(EVENT_ID, SOURCE_INBOUND, TIME_STAMP," +
"RECIPIENTS, MESSAGE_SUBJECT, SENDER, MESSAGE_ID," +
"CONNECTOR_ID, UNIQUE_REF)" +
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(insertScript);
preparedStatement.setString(1, exchangeReport.getEventId() );
preparedStatement.setString(2, exchangeReport.getSourceInbound() );
preparedStatement.setString(3, exchangeReport.getTimeStamp() );
preparedStatement.setString(4, exchangeReport.getRecipient());
preparedStatement.setString(5, exchangeReport.getMessageSubject());
preparedStatement.setString(6, exchangeReport.getSender());
preparedStatement.setString(7, exchangeReport.getMessageId());
preparedStatement.setString(8, exchangeReport.getConnectorId());
preparedStatement.setString(9, exchangeReport.getUniqueRef());
preparedStatement.executeUpdate();
}
我的问题描述,我需要从传入的.csv文件中筛选重复数据,检查该数据是否已在表中,如果没有,则保留数据,否则不插入数据。在我的方法中,我逐行读取一个唯一的.csv文件,我使用一个preparedStatement,假设它使用WHERE子句来检查重复项
Connection connection = super.getEnvironment().getConnection();
PreparedStatement preparedStatement = null;
String insertScript = null;
String skipScript = null;
//ResultSet incomeSet;
ArrayList<String> rowVals = new ArrayList();
ArrayList<String> dbList = new ArrayList<String>();
ArrayList<String> incomeList = new ArrayList<String>();
String tempVal = null;
skipScript = "select unique_ref, message_id, event_id from InboundCorres " +
"where message_id = " +
"";
preparedStatement = connection.prepareStatement(skipScript);
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println(rowVals.toString());
}
//List<String> incomeList = Arrays.asList(dataItems);
insertScript = "INSERT INTO INBOUNDCORRES(EVENT_ID, SOURCE_INBOUND, TIME_STAMP," +
"RECIPIENTS, MESSAGE_SUBJECT, SENDER, MESSAGE_ID," +
"CONNECTOR_ID, UNIQUE_REF)" +
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(insertScript);
preparedStatement.setString(1, exchangeReport.getEventId() );
preparedStatement.setString(2, exchangeReport.getSourceInbound() );
preparedStatement.setString(3, exchangeReport.getTimeStamp() );
preparedStatement.setString(4, exchangeReport.getRecipient());
preparedStatement.setString(5, exchangeReport.getMessageSubject());
preparedStatement.setString(6, exchangeReport.getSender());
preparedStatement.setString(7, exchangeReport.getMessageId());
preparedStatement.setString(8, exchangeReport.getConnectorId());
preparedStatement.setString(9, exchangeReport.getUniqueRef());
preparedStatement.executeUpdate();
}
我遇到的问题是,如何在我准备的报表中使用WHERE子句
Connection connection = super.getEnvironment().getConnection();
PreparedStatement preparedStatement = null;
String insertScript = null;
String skipScript = null;
//ResultSet incomeSet;
ArrayList<String> rowVals = new ArrayList();
ArrayList<String> dbList = new ArrayList<String>();
ArrayList<String> incomeList = new ArrayList<String>();
String tempVal = null;
skipScript = "select unique_ref, message_id, event_id from InboundCorres " +
"where message_id = " +
"";
preparedStatement = connection.prepareStatement(skipScript);
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println(rowVals.toString());
}
//List<String> incomeList = Arrays.asList(dataItems);
insertScript = "INSERT INTO INBOUNDCORRES(EVENT_ID, SOURCE_INBOUND, TIME_STAMP," +
"RECIPIENTS, MESSAGE_SUBJECT, SENDER, MESSAGE_ID," +
"CONNECTOR_ID, UNIQUE_REF)" +
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(insertScript);
preparedStatement.setString(1, exchangeReport.getEventId() );
preparedStatement.setString(2, exchangeReport.getSourceInbound() );
preparedStatement.setString(3, exchangeReport.getTimeStamp() );
preparedStatement.setString(4, exchangeReport.getRecipient());
preparedStatement.setString(5, exchangeReport.getMessageSubject());
preparedStatement.setString(6, exchangeReport.getSender());
preparedStatement.setString(7, exchangeReport.getMessageId());
preparedStatement.setString(8, exchangeReport.getConnectorId());
preparedStatement.setString(9, exchangeReport.getUniqueRef());
preparedStatement.executeUpdate();
}
下面是一些我的代码,以消除任何混乱
Connection connection = super.getEnvironment().getConnection();
PreparedStatement preparedStatement = null;
String insertScript = null;
String skipScript = null;
//ResultSet incomeSet;
ArrayList<String> rowVals = new ArrayList();
ArrayList<String> dbList = new ArrayList<String>();
ArrayList<String> incomeList = new ArrayList<String>();
String tempVal = null;
skipScript = "select unique_ref, message_id, event_id from InboundCorres " +
"where message_id = " +
"";
preparedStatement = connection.prepareStatement(skipScript);
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println(rowVals.toString());
}
//List<String> incomeList = Arrays.asList(dataItems);
insertScript = "INSERT INTO INBOUNDCORRES(EVENT_ID, SOURCE_INBOUND, TIME_STAMP," +
"RECIPIENTS, MESSAGE_SUBJECT, SENDER, MESSAGE_ID," +
"CONNECTOR_ID, UNIQUE_REF)" +
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(insertScript);
preparedStatement.setString(1, exchangeReport.getEventId() );
preparedStatement.setString(2, exchangeReport.getSourceInbound() );
preparedStatement.setString(3, exchangeReport.getTimeStamp() );
preparedStatement.setString(4, exchangeReport.getRecipient());
preparedStatement.setString(5, exchangeReport.getMessageSubject());
preparedStatement.setString(6, exchangeReport.getSender());
preparedStatement.setString(7, exchangeReport.getMessageId());
preparedStatement.setString(8, exchangeReport.getConnectorId());
preparedStatement.setString(9, exchangeReport.getUniqueRef());
preparedStatement.executeUpdate();
}
PS:这就是消息的样子,有成千上万的消息
try {
dataRow = reader.readLine();
while ((dataRow = reader.readLine()) != null) {
totalRecordsProcessed++;
dataRow = dataRow.replace("\"", "");
dataRow = dataRow.replace("<", "");
dataRow = dataRow.replace(">", "");
dataItems = dataRow.split(",", -1);
ExchangeReport exchangeReport = new ExchangeReport(dataItems);
//System.out.println(exchangeReport.toString());
persistData(exchangeReport);
}
}
Connection connection = super.getEnvironment().getConnection();
PreparedStatement preparedStatement = null;
String insertScript = null;
String skipScript = null;
//ResultSet incomeSet;
ArrayList<String> rowVals = new ArrayList();
ArrayList<String> dbList = new ArrayList<String>();
ArrayList<String> incomeList = new ArrayList<String>();
String tempVal = null;
skipScript = "select unique_ref, message_id, event_id from InboundCorres " +
"where message_id = " +
"";
preparedStatement = connection.prepareStatement(skipScript);
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println(rowVals.toString());
}
//List<String> incomeList = Arrays.asList(dataItems);
insertScript = "INSERT INTO INBOUNDCORRES(EVENT_ID, SOURCE_INBOUND, TIME_STAMP," +
"RECIPIENTS, MESSAGE_SUBJECT, SENDER, MESSAGE_ID," +
"CONNECTOR_ID, UNIQUE_REF)" +
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(insertScript);
preparedStatement.setString(1, exchangeReport.getEventId() );
preparedStatement.setString(2, exchangeReport.getSourceInbound() );
preparedStatement.setString(3, exchangeReport.getTimeStamp() );
preparedStatement.setString(4, exchangeReport.getRecipient());
preparedStatement.setString(5, exchangeReport.getMessageSubject());
preparedStatement.setString(6, exchangeReport.getSender());
preparedStatement.setString(7, exchangeReport.getMessageId());
preparedStatement.setString(8, exchangeReport.getConnectorId());
preparedStatement.setString(9, exchangeReport.getUniqueRef());
preparedStatement.executeUpdate();
}
试试{
dataRow=reader.readLine();
而((dataRow=reader.readLine())!=null){
totalRecordsProcessed++;
dataRow=dataRow.replace(“\”,”);
dataRow=dataRow.replace(“,”);
dataItems=dataRow.split(“,”,-1);
ExchangeReport ExchangeReport=新的ExchangeReport(数据项);
//System.out.println(exchangeReport.toString());
持久数据(exchangeReport);
}
}
//在insert方法中执行检查,以查看是否正在持久化重复数据
public void persistData(ExchangeReport ExchangeReport)引发SQLException{
Connection connection = super.getEnvironment().getConnection();
PreparedStatement preparedStatement = null;
String insertScript = null;
String skipScript = null;
//ResultSet incomeSet;
ArrayList<String> rowVals = new ArrayList();
ArrayList<String> dbList = new ArrayList<String>();
ArrayList<String> incomeList = new ArrayList<String>();
String tempVal = null;
skipScript = "select unique_ref, message_id, event_id from InboundCorres " +
"where message_id = " +
"";
preparedStatement = connection.prepareStatement(skipScript);
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println(rowVals.toString());
}
//List<String> incomeList = Arrays.asList(dataItems);
insertScript = "INSERT INTO INBOUNDCORRES(EVENT_ID, SOURCE_INBOUND, TIME_STAMP," +
"RECIPIENTS, MESSAGE_SUBJECT, SENDER, MESSAGE_ID," +
"CONNECTOR_ID, UNIQUE_REF)" +
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(insertScript);
preparedStatement.setString(1, exchangeReport.getEventId() );
preparedStatement.setString(2, exchangeReport.getSourceInbound() );
preparedStatement.setString(3, exchangeReport.getTimeStamp() );
preparedStatement.setString(4, exchangeReport.getRecipient());
preparedStatement.setString(5, exchangeReport.getMessageSubject());
preparedStatement.setString(6, exchangeReport.getSender());
preparedStatement.setString(7, exchangeReport.getMessageId());
preparedStatement.setString(8, exchangeReport.getConnectorId());
preparedStatement.setString(9, exchangeReport.getUniqueRef());
preparedStatement.executeUpdate();
}
Connection-Connection=super.getEnvironment().getConnection();
PreparedStatement PreparedStatement=null;
字符串insertScript=null;
字符串skipScript=null;
//结果肠系膜组;
ArrayList rowVals=新的ArrayList();
ArrayList dbList=新的ArrayList();
ArrayList incomeList=新的ArrayList();
字符串tempVal=null;
skipScript=“从InboundCorres中选择唯一的\u参考、消息\u id、事件\u id”+
“其中消息\u id=”+
"";
preparedStatement=connection.prepareStatement(skipScript);
ResultSet dbSet=preparedStatement.executeQuery();
while(dbSet.next()){
add(dbSet.getString(1.trim());
add(dbSet.getString(2.trim());
add(dbSet.getString(3.trim());
System.out.println(rowVals.toString());
}
//List incomeList=Arrays.asList(数据项);
insertScript=“插入到内部边界相关(事件\u ID、源\u入站、时间戳,”+
“收件人、邮件主题、发件人、邮件ID,”+
“连接器标识,唯一引用)”+
“值(?,,,,,,,,,,,,,,,?)”;
preparedStatement=connection.prepareStatement(插入脚本);
setString(1,exchangeReport.getEventId());
setString(2,exchangeReport.getSourceInbound());
setString(3,exchangeReport.getTimeStamp());
setString(4,exchangeReport.getRecipient());
setString(5,exchangeReport.getMessageSubject());
setString(6,exchangeReport.getSender());
setString(7,exchangeReport.getMessageId());
setString(8,exchangeReport.getConnectorId());
setString(9,exchangeReport.getUniqueRef());
preparedStatement.executeUpdate();
}
skipScript中的SQL语句不完整
Connection connection = super.getEnvironment().getConnection();
PreparedStatement preparedStatement = null;
String insertScript = null;
String skipScript = null;
//ResultSet incomeSet;
ArrayList<String> rowVals = new ArrayList();
ArrayList<String> dbList = new ArrayList<String>();
ArrayList<String> incomeList = new ArrayList<String>();
String tempVal = null;
skipScript = "select unique_ref, message_id, event_id from InboundCorres " +
"where message_id = " +
"";
preparedStatement = connection.prepareStatement(skipScript);
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println(rowVals.toString());
}
//List<String> incomeList = Arrays.asList(dataItems);
insertScript = "INSERT INTO INBOUNDCORRES(EVENT_ID, SOURCE_INBOUND, TIME_STAMP," +
"RECIPIENTS, MESSAGE_SUBJECT, SENDER, MESSAGE_ID," +
"CONNECTOR_ID, UNIQUE_REF)" +
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(insertScript);
preparedStatement.setString(1, exchangeReport.getEventId() );
preparedStatement.setString(2, exchangeReport.getSourceInbound() );
preparedStatement.setString(3, exchangeReport.getTimeStamp() );
preparedStatement.setString(4, exchangeReport.getRecipient());
preparedStatement.setString(5, exchangeReport.getMessageSubject());
preparedStatement.setString(6, exchangeReport.getSender());
preparedStatement.setString(7, exchangeReport.getMessageId());
preparedStatement.setString(8, exchangeReport.getConnectorId());
preparedStatement.setString(9, exchangeReport.getUniqueRef());
preparedStatement.executeUpdate();
}
我希望看到这样的情况:
Connection connection = super.getEnvironment().getConnection();
PreparedStatement preparedStatement = null;
String insertScript = null;
String skipScript = null;
//ResultSet incomeSet;
ArrayList<String> rowVals = new ArrayList();
ArrayList<String> dbList = new ArrayList<String>();
ArrayList<String> incomeList = new ArrayList<String>();
String tempVal = null;
skipScript = "select unique_ref, message_id, event_id from InboundCorres " +
"where message_id = " +
"";
preparedStatement = connection.prepareStatement(skipScript);
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println(rowVals.toString());
}
//List<String> incomeList = Arrays.asList(dataItems);
insertScript = "INSERT INTO INBOUNDCORRES(EVENT_ID, SOURCE_INBOUND, TIME_STAMP," +
"RECIPIENTS, MESSAGE_SUBJECT, SENDER, MESSAGE_ID," +
"CONNECTOR_ID, UNIQUE_REF)" +
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(insertScript);
preparedStatement.setString(1, exchangeReport.getEventId() );
preparedStatement.setString(2, exchangeReport.getSourceInbound() );
preparedStatement.setString(3, exchangeReport.getTimeStamp() );
preparedStatement.setString(4, exchangeReport.getRecipient());
preparedStatement.setString(5, exchangeReport.getMessageSubject());
preparedStatement.setString(6, exchangeReport.getSender());
preparedStatement.setString(7, exchangeReport.getMessageId());
preparedStatement.setString(8, exchangeReport.getConnectorId());
preparedStatement.setString(9, exchangeReport.getUniqueRef());
preparedStatement.executeUpdate();
}
public void saveMessage (final String messageId) {
Map<String, Object> values = new HashMap<String, Object>();
values.put("msg_id", messageId);
jdbcTemplate.update(skipScript , values);
}
skipScript=“从InboundCorres中选择唯一的\u参考、消息\u id、事件\u id”+
“其中message_id=:msg_id”
Connection connection = super.getEnvironment().getConnection();
PreparedStatement preparedStatement = null;
String insertScript = null;
String skipScript = null;
//ResultSet incomeSet;
ArrayList<String> rowVals = new ArrayList();
ArrayList<String> dbList = new ArrayList<String>();
ArrayList<String> incomeList = new ArrayList<String>();
String tempVal = null;
skipScript = "select unique_ref, message_id, event_id from InboundCorres " +
"where message_id = " +
"";
preparedStatement = connection.prepareStatement(skipScript);
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println(rowVals.toString());
}
//List<String> incomeList = Arrays.asList(dataItems);
insertScript = "INSERT INTO INBOUNDCORRES(EVENT_ID, SOURCE_INBOUND, TIME_STAMP," +
"RECIPIENTS, MESSAGE_SUBJECT, SENDER, MESSAGE_ID," +
"CONNECTOR_ID, UNIQUE_REF)" +
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(insertScript);
preparedStatement.setString(1, exchangeReport.getEventId() );
preparedStatement.setString(2, exchangeReport.getSourceInbound() );
preparedStatement.setString(3, exchangeReport.getTimeStamp() );
preparedStatement.setString(4, exchangeReport.getRecipient());
preparedStatement.setString(5, exchangeReport.getMessageSubject());
preparedStatement.setString(6, exchangeReport.getSender());
preparedStatement.setString(7, exchangeReport.getMessageId());
preparedStatement.setString(8, exchangeReport.getConnectorId());
preparedStatement.setString(9, exchangeReport.getUniqueRef());
preparedStatement.executeUpdate();
}
因此,message_id是列名,msg_id是一个本地字符串变量,用于保存我们要查找的值
Connection connection = super.getEnvironment().getConnection();
PreparedStatement preparedStatement = null;
String insertScript = null;
String skipScript = null;
//ResultSet incomeSet;
ArrayList<String> rowVals = new ArrayList();
ArrayList<String> dbList = new ArrayList<String>();
ArrayList<String> incomeList = new ArrayList<String>();
String tempVal = null;
skipScript = "select unique_ref, message_id, event_id from InboundCorres " +
"where message_id = " +
"";
preparedStatement = connection.prepareStatement(skipScript);
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println(rowVals.toString());
}
//List<String> incomeList = Arrays.asList(dataItems);
insertScript = "INSERT INTO INBOUNDCORRES(EVENT_ID, SOURCE_INBOUND, TIME_STAMP," +
"RECIPIENTS, MESSAGE_SUBJECT, SENDER, MESSAGE_ID," +
"CONNECTOR_ID, UNIQUE_REF)" +
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(insertScript);
preparedStatement.setString(1, exchangeReport.getEventId() );
preparedStatement.setString(2, exchangeReport.getSourceInbound() );
preparedStatement.setString(3, exchangeReport.getTimeStamp() );
preparedStatement.setString(4, exchangeReport.getRecipient());
preparedStatement.setString(5, exchangeReport.getMessageSubject());
preparedStatement.setString(6, exchangeReport.getSender());
preparedStatement.setString(7, exchangeReport.getMessageId());
preparedStatement.setString(8, exchangeReport.getConnectorId());
preparedStatement.setString(9, exchangeReport.getUniqueRef());
preparedStatement.executeUpdate();
}
要获取msg_id中的值,我们可以调用一个名为saveMessage()的方法,该方法类似于:
Connection connection = super.getEnvironment().getConnection();
PreparedStatement preparedStatement = null;
String insertScript = null;
String skipScript = null;
//ResultSet incomeSet;
ArrayList<String> rowVals = new ArrayList();
ArrayList<String> dbList = new ArrayList<String>();
ArrayList<String> incomeList = new ArrayList<String>();
String tempVal = null;
skipScript = "select unique_ref, message_id, event_id from InboundCorres " +
"where message_id = " +
"";
preparedStatement = connection.prepareStatement(skipScript);
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println(rowVals.toString());
}
//List<String> incomeList = Arrays.asList(dataItems);
insertScript = "INSERT INTO INBOUNDCORRES(EVENT_ID, SOURCE_INBOUND, TIME_STAMP," +
"RECIPIENTS, MESSAGE_SUBJECT, SENDER, MESSAGE_ID," +
"CONNECTOR_ID, UNIQUE_REF)" +
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(insertScript);
preparedStatement.setString(1, exchangeReport.getEventId() );
preparedStatement.setString(2, exchangeReport.getSourceInbound() );
preparedStatement.setString(3, exchangeReport.getTimeStamp() );
preparedStatement.setString(4, exchangeReport.getRecipient());
preparedStatement.setString(5, exchangeReport.getMessageSubject());
preparedStatement.setString(6, exchangeReport.getSender());
preparedStatement.setString(7, exchangeReport.getMessageId());
preparedStatement.setString(8, exchangeReport.getConnectorId());
preparedStatement.setString(9, exchangeReport.getUniqueRef());
preparedStatement.executeUpdate();
}
public void saveMessage (final String messageId) {
Map<String, Object> values = new HashMap<String, Object>();
values.put("msg_id", messageId);
jdbcTemplate.update(skipScript , values);
}
public void saveMessage(最终字符串messageId){
映射值=新的HashMap();
value.put(“msg_id”,messageId);
更新(skipScript,值);
}
请注意,我特意为message_id使用了三个不同的名称,以明确发生了什么
Connection connection = super.getEnvironment().getConnection();
PreparedStatement preparedStatement = null;
String insertScript = null;
String skipScript = null;
//ResultSet incomeSet;
ArrayList<String> rowVals = new ArrayList();
ArrayList<String> dbList = new ArrayList<String>();
ArrayList<String> incomeList = new ArrayList<String>();
String tempVal = null;
skipScript = "select unique_ref, message_id, event_id from InboundCorres " +
"where message_id = " +
"";
preparedStatement = connection.prepareStatement(skipScript);
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println(rowVals.toString());
}
//List<String> incomeList = Arrays.asList(dataItems);
insertScript = "INSERT INTO INBOUNDCORRES(EVENT_ID, SOURCE_INBOUND, TIME_STAMP," +
"RECIPIENTS, MESSAGE_SUBJECT, SENDER, MESSAGE_ID," +
"CONNECTOR_ID, UNIQUE_REF)" +
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(insertScript);
preparedStatement.setString(1, exchangeReport.getEventId() );
preparedStatement.setString(2, exchangeReport.getSourceInbound() );
preparedStatement.setString(3, exchangeReport.getTimeStamp() );
preparedStatement.setString(4, exchangeReport.getRecipient());
preparedStatement.setString(5, exchangeReport.getMessageSubject());
preparedStatement.setString(6, exchangeReport.getSender());
preparedStatement.setString(7, exchangeReport.getMessageId());
preparedStatement.setString(8, exchangeReport.getConnectorId());
preparedStatement.setString(9, exchangeReport.getUniqueRef());
preparedStatement.executeUpdate();
}
希望这有帮助。我意识到我的示例使用了jdbcTemplate.update(),这与代码示例不同,但原理类似。skipScript中的SQL语句不完整
Connection connection = super.getEnvironment().getConnection();
PreparedStatement preparedStatement = null;
String insertScript = null;
String skipScript = null;
//ResultSet incomeSet;
ArrayList<String> rowVals = new ArrayList();
ArrayList<String> dbList = new ArrayList<String>();
ArrayList<String> incomeList = new ArrayList<String>();
String tempVal = null;
skipScript = "select unique_ref, message_id, event_id from InboundCorres " +
"where message_id = " +
"";
preparedStatement = connection.prepareStatement(skipScript);
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println(rowVals.toString());
}
//List<String> incomeList = Arrays.asList(dataItems);
insertScript = "INSERT INTO INBOUNDCORRES(EVENT_ID, SOURCE_INBOUND, TIME_STAMP," +
"RECIPIENTS, MESSAGE_SUBJECT, SENDER, MESSAGE_ID," +
"CONNECTOR_ID, UNIQUE_REF)" +
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(insertScript);
preparedStatement.setString(1, exchangeReport.getEventId() );
preparedStatement.setString(2, exchangeReport.getSourceInbound() );
preparedStatement.setString(3, exchangeReport.getTimeStamp() );
preparedStatement.setString(4, exchangeReport.getRecipient());
preparedStatement.setString(5, exchangeReport.getMessageSubject());
preparedStatement.setString(6, exchangeReport.getSender());
preparedStatement.setString(7, exchangeReport.getMessageId());
preparedStatement.setString(8, exchangeReport.getConnectorId());
preparedStatement.setString(9, exchangeReport.getUniqueRef());
preparedStatement.executeUpdate();
}
我希望看到这样的情况:
Connection connection = super.getEnvironment().getConnection();
PreparedStatement preparedStatement = null;
String insertScript = null;
String skipScript = null;
//ResultSet incomeSet;
ArrayList<String> rowVals = new ArrayList();
ArrayList<String> dbList = new ArrayList<String>();
ArrayList<String> incomeList = new ArrayList<String>();
String tempVal = null;
skipScript = "select unique_ref, message_id, event_id from InboundCorres " +
"where message_id = " +
"";
preparedStatement = connection.prepareStatement(skipScript);
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println(rowVals.toString());
}
//List<String> incomeList = Arrays.asList(dataItems);
insertScript = "INSERT INTO INBOUNDCORRES(EVENT_ID, SOURCE_INBOUND, TIME_STAMP," +
"RECIPIENTS, MESSAGE_SUBJECT, SENDER, MESSAGE_ID," +
"CONNECTOR_ID, UNIQUE_REF)" +
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(insertScript);
preparedStatement.setString(1, exchangeReport.getEventId() );
preparedStatement.setString(2, exchangeReport.getSourceInbound() );
preparedStatement.setString(3, exchangeReport.getTimeStamp() );
preparedStatement.setString(4, exchangeReport.getRecipient());
preparedStatement.setString(5, exchangeReport.getMessageSubject());
preparedStatement.setString(6, exchangeReport.getSender());
preparedStatement.setString(7, exchangeReport.getMessageId());
preparedStatement.setString(8, exchangeReport.getConnectorId());
preparedStatement.setString(9, exchangeReport.getUniqueRef());
preparedStatement.executeUpdate();
}
public void saveMessage (final String messageId) {
Map<String, Object> values = new HashMap<String, Object>();
values.put("msg_id", messageId);
jdbcTemplate.update(skipScript , values);
}
skipScript=“从InboundCorres中选择唯一的\u参考、消息\u id、事件\u id”+
“其中message_id=:msg_id”
Connection connection = super.getEnvironment().getConnection();
PreparedStatement preparedStatement = null;
String insertScript = null;
String skipScript = null;
//ResultSet incomeSet;
ArrayList<String> rowVals = new ArrayList();
ArrayList<String> dbList = new ArrayList<String>();
ArrayList<String> incomeList = new ArrayList<String>();
String tempVal = null;
skipScript = "select unique_ref, message_id, event_id from InboundCorres " +
"where message_id = " +
"";
preparedStatement = connection.prepareStatement(skipScript);
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println(rowVals.toString());
}
//List<String> incomeList = Arrays.asList(dataItems);
insertScript = "INSERT INTO INBOUNDCORRES(EVENT_ID, SOURCE_INBOUND, TIME_STAMP," +
"RECIPIENTS, MESSAGE_SUBJECT, SENDER, MESSAGE_ID," +
"CONNECTOR_ID, UNIQUE_REF)" +
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(insertScript);
preparedStatement.setString(1, exchangeReport.getEventId() );
preparedStatement.setString(2, exchangeReport.getSourceInbound() );
preparedStatement.setString(3, exchangeReport.getTimeStamp() );
preparedStatement.setString(4, exchangeReport.getRecipient());
preparedStatement.setString(5, exchangeReport.getMessageSubject());
preparedStatement.setString(6, exchangeReport.getSender());
preparedStatement.setString(7, exchangeReport.getMessageId());
preparedStatement.setString(8, exchangeReport.getConnectorId());
preparedStatement.setString(9, exchangeReport.getUniqueRef());
preparedStatement.executeUpdate();
}
因此,message_id是列名,msg_id是一个本地字符串变量,用于保存我们要查找的值
Connection connection = super.getEnvironment().getConnection();
PreparedStatement preparedStatement = null;
String insertScript = null;
String skipScript = null;
//ResultSet incomeSet;
ArrayList<String> rowVals = new ArrayList();
ArrayList<String> dbList = new ArrayList<String>();
ArrayList<String> incomeList = new ArrayList<String>();
String tempVal = null;
skipScript = "select unique_ref, message_id, event_id from InboundCorres " +
"where message_id = " +
"";
preparedStatement = connection.prepareStatement(skipScript);
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println(rowVals.toString());
}
//List<String> incomeList = Arrays.asList(dataItems);
insertScript = "INSERT INTO INBOUNDCORRES(EVENT_ID, SOURCE_INBOUND, TIME_STAMP," +
"RECIPIENTS, MESSAGE_SUBJECT, SENDER, MESSAGE_ID," +
"CONNECTOR_ID, UNIQUE_REF)" +
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(insertScript);
preparedStatement.setString(1, exchangeReport.getEventId() );
preparedStatement.setString(2, exchangeReport.getSourceInbound() );
preparedStatement.setString(3, exchangeReport.getTimeStamp() );
preparedStatement.setString(4, exchangeReport.getRecipient());
preparedStatement.setString(5, exchangeReport.getMessageSubject());
preparedStatement.setString(6, exchangeReport.getSender());
preparedStatement.setString(7, exchangeReport.getMessageId());
preparedStatement.setString(8, exchangeReport.getConnectorId());
preparedStatement.setString(9, exchangeReport.getUniqueRef());
preparedStatement.executeUpdate();
}
要获取msg_id中的值,我们可以调用一个名为saveMessage()的方法,该方法类似于:
Connection connection = super.getEnvironment().getConnection();
PreparedStatement preparedStatement = null;
String insertScript = null;
String skipScript = null;
//ResultSet incomeSet;
ArrayList<String> rowVals = new ArrayList();
ArrayList<String> dbList = new ArrayList<String>();
ArrayList<String> incomeList = new ArrayList<String>();
String tempVal = null;
skipScript = "select unique_ref, message_id, event_id from InboundCorres " +
"where message_id = " +
"";
preparedStatement = connection.prepareStatement(skipScript);
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println(rowVals.toString());
}
//List<String> incomeList = Arrays.asList(dataItems);
insertScript = "INSERT INTO INBOUNDCORRES(EVENT_ID, SOURCE_INBOUND, TIME_STAMP," +
"RECIPIENTS, MESSAGE_SUBJECT, SENDER, MESSAGE_ID," +
"CONNECTOR_ID, UNIQUE_REF)" +
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(insertScript);
preparedStatement.setString(1, exchangeReport.getEventId() );
preparedStatement.setString(2, exchangeReport.getSourceInbound() );
preparedStatement.setString(3, exchangeReport.getTimeStamp() );
preparedStatement.setString(4, exchangeReport.getRecipient());
preparedStatement.setString(5, exchangeReport.getMessageSubject());
preparedStatement.setString(6, exchangeReport.getSender());
preparedStatement.setString(7, exchangeReport.getMessageId());
preparedStatement.setString(8, exchangeReport.getConnectorId());
preparedStatement.setString(9, exchangeReport.getUniqueRef());
preparedStatement.executeUpdate();
}
public void saveMessage (final String messageId) {
Map<String, Object> values = new HashMap<String, Object>();
values.put("msg_id", messageId);
jdbcTemplate.update(skipScript , values);
}
public void saveMessage(最终字符串messageId){
映射值=新的HashMap();
value.put(“msg_id”,messageId);
更新(skipScript,值);
}
请注意,我特意为message_id使用了三个不同的名称,以明确发生了什么
Connection connection = super.getEnvironment().getConnection();
PreparedStatement preparedStatement = null;
String insertScript = null;
String skipScript = null;
//ResultSet incomeSet;
ArrayList<String> rowVals = new ArrayList();
ArrayList<String> dbList = new ArrayList<String>();
ArrayList<String> incomeList = new ArrayList<String>();
String tempVal = null;
skipScript = "select unique_ref, message_id, event_id from InboundCorres " +
"where message_id = " +
"";
preparedStatement = connection.prepareStatement(skipScript);
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println(rowVals.toString());
}
//List<String> incomeList = Arrays.asList(dataItems);
insertScript = "INSERT INTO INBOUNDCORRES(EVENT_ID, SOURCE_INBOUND, TIME_STAMP," +
"RECIPIENTS, MESSAGE_SUBJECT, SENDER, MESSAGE_ID," +
"CONNECTOR_ID, UNIQUE_REF)" +
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(insertScript);
preparedStatement.setString(1, exchangeReport.getEventId() );
preparedStatement.setString(2, exchangeReport.getSourceInbound() );
preparedStatement.setString(3, exchangeReport.getTimeStamp() );
preparedStatement.setString(4, exchangeReport.getRecipient());
preparedStatement.setString(5, exchangeReport.getMessageSubject());
preparedStatement.setString(6, exchangeReport.getSender());
preparedStatement.setString(7, exchangeReport.getMessageId());
preparedStatement.setString(8, exchangeReport.getConnectorId());
preparedStatement.setString(9, exchangeReport.getUniqueRef());
preparedStatement.executeUpdate();
}
希望这有帮助。我意识到我的示例使用了jdbcTemplate.update(),这与代码示例不同,但原理类似。谢谢用户4810988,您帮助我找到了解决方案
Connection connection = super.getEnvironment().getConnection();
PreparedStatement preparedStatement = null;
String insertScript = null;
String skipScript = null;
//ResultSet incomeSet;
ArrayList<String> rowVals = new ArrayList();
ArrayList<String> dbList = new ArrayList<String>();
ArrayList<String> incomeList = new ArrayList<String>();
String tempVal = null;
skipScript = "select unique_ref, message_id, event_id from InboundCorres " +
"where message_id = " +
"";
preparedStatement = connection.prepareStatement(skipScript);
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println(rowVals.toString());
}
//List<String> incomeList = Arrays.asList(dataItems);
insertScript = "INSERT INTO INBOUNDCORRES(EVENT_ID, SOURCE_INBOUND, TIME_STAMP," +
"RECIPIENTS, MESSAGE_SUBJECT, SENDER, MESSAGE_ID," +
"CONNECTOR_ID, UNIQUE_REF)" +
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(insertScript);
preparedStatement.setString(1, exchangeReport.getEventId() );
preparedStatement.setString(2, exchangeReport.getSourceInbound() );
preparedStatement.setString(3, exchangeReport.getTimeStamp() );
preparedStatement.setString(4, exchangeReport.getRecipient());
preparedStatement.setString(5, exchangeReport.getMessageSubject());
preparedStatement.setString(6, exchangeReport.getSender());
preparedStatement.setString(7, exchangeReport.getMessageId());
preparedStatement.setString(8, exchangeReport.getConnectorId());
preparedStatement.setString(9, exchangeReport.getUniqueRef());
preparedStatement.executeUpdate();
}
skipScript = "select TIME_STAMP " +
" from InboundCorres where unique_ref = ? " +
"and message_id = ? " +
"and event_id = ?";
preparedStatement = connection.prepareStatement(skipScript);
preparedStatement.setString(1, exchangeReport.getUniqueRef());
preparedStatement.setString(2, exchangeReport.getMessageId());
preparedStatement.setString(3, exchangeReport.getEventId());
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println("Duplicates found ==>" + rowVals.toString());
}
这就是我一直在寻找的解决方案。谢谢用户4810988,您帮助我找到了解决方案
Connection connection = super.getEnvironment().getConnection();
PreparedStatement preparedStatement = null;
String insertScript = null;
String skipScript = null;
//ResultSet incomeSet;
ArrayList<String> rowVals = new ArrayList();
ArrayList<String> dbList = new ArrayList<String>();
ArrayList<String> incomeList = new ArrayList<String>();
String tempVal = null;
skipScript = "select unique_ref, message_id, event_id from InboundCorres " +
"where message_id = " +
"";
preparedStatement = connection.prepareStatement(skipScript);
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println(rowVals.toString());
}
//List<String> incomeList = Arrays.asList(dataItems);
insertScript = "INSERT INTO INBOUNDCORRES(EVENT_ID, SOURCE_INBOUND, TIME_STAMP," +
"RECIPIENTS, MESSAGE_SUBJECT, SENDER, MESSAGE_ID," +
"CONNECTOR_ID, UNIQUE_REF)" +
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(insertScript);
preparedStatement.setString(1, exchangeReport.getEventId() );
preparedStatement.setString(2, exchangeReport.getSourceInbound() );
preparedStatement.setString(3, exchangeReport.getTimeStamp() );
preparedStatement.setString(4, exchangeReport.getRecipient());
preparedStatement.setString(5, exchangeReport.getMessageSubject());
preparedStatement.setString(6, exchangeReport.getSender());
preparedStatement.setString(7, exchangeReport.getMessageId());
preparedStatement.setString(8, exchangeReport.getConnectorId());
preparedStatement.setString(9, exchangeReport.getUniqueRef());
preparedStatement.executeUpdate();
}
skipScript = "select TIME_STAMP " +
" from InboundCorres where unique_ref = ? " +
"and message_id = ? " +
"and event_id = ?";
preparedStatement = connection.prepareStatement(skipScript);
preparedStatement.setString(1, exchangeReport.getUniqueRef());
preparedStatement.setString(2, exchangeReport.getMessageId());
preparedStatement.setString(3, exchangeReport.getEventId());
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println("Duplicates found ==>" + rowVals.toString());
}
这就是我一直在寻找的解决方案。这条语句在做什么(特别是where子句)?
skipScript=“从InboundCorres”+“where message\u id=“+”中选择唯一的\u ref,message\u id,event\u id”";代码>使用distinct关键字语句应执行实际的重复检查,然后跳过插入到表中的重复项。注意,message\u id列将始终有两个相同的message\u id
Connection connection = super.getEnvironment().getConnection();
PreparedStatement preparedStatement = null;
String insertScript = null;
String skipScript = null;
//ResultSet incomeSet;
ArrayList<String> rowVals = new ArrayList();
ArrayList<String> dbList = new ArrayList<String>();
ArrayList<String> incomeList = new ArrayList<String>();
String tempVal = null;
skipScript = "select unique_ref, message_id, event_id from InboundCorres " +
"where message_id = " +
"";
preparedStatement = connection.prepareStatement(skipScript);
ResultSet dbSet = preparedStatement.executeQuery();
while (dbSet.next()) {
rowVals.add(dbSet.getString(1).trim());
rowVals.add(dbSet.getString(2).trim());
rowVals.add(dbSet.getString(3).trim());
System.out.println(rowVals.toString());
}
//List<String> incomeList = Arrays.asList(dataItems);
insertScript = "INSERT INTO INBOUNDCORRES(EVENT_ID, SOURCE_INBOUND, TIME_STAMP," +
"RECIPIENTS, MESSAGE_SUBJECT, SENDER, MESSAGE_ID," +
"CONNECTOR_ID, UNIQUE_REF)" +
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(insertScript);
preparedStatement.setString(1, exchangeReport.getEventId() );
preparedStatement.setString(2, exchangeReport.getSourceInbound() );
preparedStatement.setString(3, exchangeReport.getTimeStamp() );
preparedStatement.setString(4, exchangeReport.getRecipient());
preparedStatement.setString(5, exchangeReport.getMessageSubject());
preparedStatement.setString(6, exchangeReport.getSender());
preparedStatement.setString(7, exchangeReport.getMessageId());
preparedStatement.setString(8, exchangeReport.getConnectorId());
preparedStatement.setString(9, exchangeReport.getUniqueRef());
preparedStatement.executeUpdate();
}