0
如何比較兩個不同數據庫中的值與數據遷移中列中的相同數據。我正在運行jUnit測試,並沒有通過測試相同的值。我究竟做錯了什麼?我知道我有源數據庫和目標數據庫設置爲相同的數據庫,即他們是同樣的事情。我這樣做是因爲我想確保整個過程中的連接是正確的,並將任何問題都縮小到語法錯誤。名稱列的行中的值是;倡議管理,錯誤&增強功能,硬件&軟件請求。如何使用Java代碼比較VARCHAR數據類型以確保數據庫中的數據相同
public class DemandTypeCopier {
public static String QUERY_CREATECOPY = "select name from tr_demandtype where name=?";
}
public void testQUERY_CREATECOPY() throws Exception{
UnitTestHelper helper = new UnitTestHelper();
Connection con = helper.getConnection(helper.sourceDBUrl);
Connection conTarget = helper.getConnection(helper.targetDBUrl);
String x = "Initiative management";
PreparedStatement stmt = con.prepareStatement(DemandTypeCopier.QUERY_CREATECOPY);
stmt.setString(1, x);
ResultSet sourceVal = stmt.executeQuery();
stmt = conTarget.prepareStatement(DemandTypeCopier.QUERY_CREATECOPY);
stmt.setString(1, x);
ResultSet targetVal = stmt.executeQuery();
assertTrue(helper.resultSetsEqual(sourceVal,targetVal));
}
public boolean resultSetsEqual (ResultSet source, ResultSet target) throws SQLException{
while(source.next())
{
target.next();
ResultSetMetaData metadata = source.getMetaData();
int count = metadata.getColumnCount();
for (int i =1; i<=count; i++)
{
if(source.getObject(i) != target.getObject(i))
{
return false;
}
}
}
return true;
}
我更改了ResultSetEqual以反映該更改,但仍未通過測試。它在assertTrue失敗(helper.resultSetsEqual(sourceVal,targetVal)); – Croeber
編輯答案添加關於ORDER BY和檢查target.next()的部分,這可能是你的問題 –