Note that there are some explanatory texts on larger screens.

plurals
  1. POproblem with putting hash map into another collection
    text
    copied!<ol> <li><p>In the below code the child hashmap when printed within loop shows correct value but when the parent hashmap is printed outside the loop the child hashmap is showing a map with only the values of last entry overiding all the values. </p> <pre><code> public void compareOracleMySQLData() throws SQLException { String inputTableName = ConfigurationManager.getProperty("table_name"); int i = 0; int j = 0; int colCount = 0; int oracleRowCount = 0; int mysqlRowCount = 0; String primaryKeyIni = null; String appendStuff = null; Connection conO = DBManager.openDbConnection("mysql"); Connection conM = DBManager.openDbConnection("mysql"); Statement stmtO = null; Statement stmtM = null; ResultSet resultSetO = null; ResultSet resultSetM = null; ArrayList&lt;String&gt; primaryKeyList = new ArrayList&lt;String&gt;(); Iterator&lt;String&gt; primaryKeyListItr = null; HashMap&lt;Object, Object&gt; oraRowDetailsMap = new HashMap&lt;Object, Object&gt;(); HashMap&lt;String, Object&gt; mysqlRowDetailsMap = new HashMap&lt;String, Object&gt;(); Map&lt;String, Object&gt; oraRowPrimaryMap = new HashMap&lt;String, Object&gt;(); HashMap&lt;String, HashMap&lt;String, Object&gt;&gt; mysqlRowPrimaryMap = new HashMap&lt;String, HashMap&lt;String, Object&gt;&gt;(); // Map&lt;String, Object&gt; oraRowPrimaryMap=new HashMap&lt;String, Object&gt;(); // Map&lt;String, Object&gt; mysqlRowPrimaryMap=new HashMap&lt;String, Object&gt;(); try { if (conO != null &amp;&amp; conM != null) { if (validateTableStatus(inputTableName, conO, conM)) { // Check table existence in Oracle and Mysql Database // Create resultset for oracle stmtO = conO.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); resultSetO = stmtO.executeQuery(DB_QUERY); ResultSetMetaData rsMetaDataO = resultSetO.getMetaData(); // // MySql details for the same table created stmtM = conM.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); resultSetM = stmtM.executeQuery(DB_QUERY); // Get Column Count for two tables ResultSetMetaData rsMetaDataM = resultSetM.getMetaData(); logger.debug("Column Count in Oracle table ::" + rsMetaDataO.getColumnCount()); logger.debug("Column Count in Mysql table ::" + rsMetaDataM.getColumnCount()); // Match Column count of two tables if (rsMetaDataM.getColumnCount() == rsMetaDataO .getColumnCount()) { logger.debug("The Column count in both table are same"); oracleRowCount = getRowCount(inputTableName, resultSetO); mysqlRowCount = getRowCount(inputTableName, resultSetM); logger.debug("No of Rows of Oracle Table :: " + oracleRowCount); logger.debug("No of Rows of Mysql Table :: " + mysqlRowCount); if (oracleRowCount != mysqlRowCount) { logger .debug("The number of rows of Oracle and Mysql tables respectively differs"); } else { primaryKeyList = getPrimaryKey(inputTableName, conO); while (resultSetO.next()) { i = 0; primaryKeyListItr = primaryKeyList.iterator(); while (primaryKeyListItr.hasNext()) { if (i == 0) { primaryKeyIni = (resultSetO .getObject(primaryKeyListItr .next().toString())) .toString().trim(); } else { appendStuff = (resultSetO .getObject(primaryKeyListItr .next().toString())) .toString().trim(); primaryKeyIni = primaryKeyIni + "$" + appendStuff; } i++; } // colCount = rsMetaDataO.getColumnCount(); for (j = 1; j &lt;= colCount; j++) { System.out.println("Col Name"+rsMetaDataO .getColumnName(j)); System.out.println("Col Value"+ resultSetO .getObject(rsMetaDataO .getColumnName(j))); oraRowDetailsMap.put(rsMetaDataO .getColumnName(j), resultSetO .getObject(rsMetaDataO .getColumnName(j))); } System.out.println("primaryKeyIni"+primaryKeyIni); System.out.println("oraRowDetailsMap inside loop"+oraRowDetailsMap); oraRowPrimaryMap.put(primaryKeyIni, oraRowDetailsMap); } System.out.println("oraRowDetailsMap"+oraRowDetailsMap);System.out.println(oraRowPrimaryMap); } } else { logger.debug("The number of Columns of Oracle and Mysql table differs"); } } } } catch (SQLException e) { logger.debug("Error in CompareOracleMySQLData()" + e.getMessage()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { DBManager.closeConnection(conO); DBManager.closeConnection(conM); DBManager.closeStatement(stmtO); DBManager.closeStatement(stmtM); DBManager.closeResultSet(resultSetO); DBManager.closeResultSet(resultSetM);}} </code></pre></li> </ol> <p>2.The output is below :: </p> <pre><code> DEPLOYMENT_LEVEL is: DVL DEBUG com.tsh.compass.intranet.dao.DbDao 18 Jun 2011 23:06:39 IST. - Connection to MYSQL database established DEBUG com.tsh.compass.intranet.dao.DbDao 18 Jun 2011 23:06:39 IST. - Connection to MYSQL database established DEBUG com.tsh.compass.intranet.dao.DbDao 18 Jun 2011 23:06:39 IST. - Column Count in Oracle table ::4 DEBUG com.tsh.compass.intranet.dao.DbDao 18 Jun 2011 23:06:39 IST. - Column Count in Mysql table ::4 DEBUG com.tsh.compass.intranet.dao.DbDao 18 Jun 2011 23:06:39 IST. - The Column count in both table are same DEBUG com.tsh.compass.intranet.dao.DbDao 18 Jun 2011 23:06:39 IST. - No of Rows of Oracle Table :: 3 DEBUG com.tsh.compass.intranet.dao.DbDao 18 Jun 2011 23:06:39 IST. - No of Rows of Mysql Table :: 3 Col NameFirst_Name Col Valuefn Col NameLast_Name Col Valueln Col NameAddress Col Valueadr Col NameCity Col Valuecity primaryKeyInifn$ln oraRowDetailsMap inside loop{Address=adr, Last_Name=ln, First_Name=fn, City=city} Col NameFirst_Name Col Valuefn1 Col NameLast_Name Col Valueln1 Col NameAddress Col Valueadr1 Col NameCity Col Valuecity1 primaryKeyInifn1$ln1 oraRowDetailsMap inside loop{Address=adr1, Last_Name=ln1, First_Name=fn1, City=city1} Col NameFirst_Name Col Valuefn3 Col NameLast_Name Col Valueln3 Col NameAddress Col Valueadr3 Col NameCity Col Valuecity3 primaryKeyInifn3$ln3 oraRowDetailsMap inside loop{Address=adr3, Last_Name=ln3, First_Name=fn3, City=city3} oraRowPrimaryMap{fn3$ln3={Address=adr3, Last_Name=ln3, First_Name=fn3, City=city3}, fn$ln={Address=adr3, Last_Name=ln3, First_Name=fn3, City=city3}, fn1$ln1= {Address=adr3, Last_Name=ln3, First_Name=fn3, City=city3}} </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload