2013-07-26 66 views
0

我想比较两个查询结果以查看它们是否相同。如果结果相同,我想显示一个MessageBox;如果不做别的。如何比较两个查询的结果?

using (OracleCommand crtCommand = new OracleCommand(query1, conn1)) 
{ 
    string result1 = crtCommand.ExecuteScalar().ToString(); 
} 

using (OracleCommand ctCommand = new OracleCommand("query2", conn1)) 
{ 
    string result2 = ctCommand.ExecuteScalar().ToString(); 
} 

if (result1 == result2) 
    MessageBox.Show("They are same"); 
else 
    MessageBox.Show("They are not same"); 
+0

问题是什么? – SLaks

回答

3

您需要声明using语句之外的变量,以便它们在该范围之外可见。

+0

如果我在使用语句之外声明变量,它们将是可见的,但是我的ctCommand和crtCommand不会是可见的...... – user2619275

+0

只需在using语句之外声明它们......您仍然可以为它们赋值_inside_ using语句。 –

0

如果两个查询都返回字符串输出,则可以使用string.Compare方法比较它们并根据输出有条件地执行您想要执行的操作。然而,这不是那么简单,你问的是什么。你能否进一步阐述你的问题?

0

您只需要在使用块之外声明字符串,但仍然在使用块内分配它们。

string result1; 
string result2; 

using (OracleCommand crtCommand = new OracleCommand(query1, conn1)) 
{ 
    result1 = crtCommand.ExecuteScalar().ToString(); 
} 

using (OracleCommand ctCommand = new OracleCommand("query2", conn1)) 
{ 
    result2 = ctCommand.ExecuteScalar().ToString(); 
} 

if (result1.Equals(result2)) 
    MessageBox.Show("They are same"); 
else 
    MessageBox.Show("They are not same"); 

此外,我建议您更换您的==.Equals(),如果你愿意,你可以设置选项,使其不区分大小写也因此THISthis被视为相等

if (result1.Equals(result2, StringComparison.OrdinalIgnoreCase)) 
    MessageBox.Show("They are same"); 
else 
    MessageBox.Show("They are not same");