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()的部分,这可能是你的问题 –