[英]move listbox item to another listbox?
我想使用每个listbox1项来运行两个查询,如果两个结果都不相同,则将该项移动到另一个名为listbox2的列表框(如果它们相同,则从listbox1中删除该项)。
foreach (string Items in listBox1.Items)
{
using (OracleCommand crtCommand = new OracleCommand("select count(*) from(( select * from all_ind_columns where index_name= '" + Items + "' and table_owner='" + txtSrcUserID.Text.ToUpper() + "'))", conn1))
using (OracleCommand ctCommand = new OracleCommand("select count(*) from(( select * from all_ind_columns where index_name= '" + Items + "' and table_owner='" + txtDesUserID.Text.ToUpper() + "'))", conn1))
{
string result1 = crtCommand.ExecuteScalar().ToString();
string result2 = ctCommand.ExecuteScalar().ToString();
if (result1 != result2)
{
//move that item to listbox2
}
else if(result1 == result2)
{
// remove that item from listbox1
}
}
}
你不能在这里使用foreach
,因为你改变了循环中的listBox1.Items
,使用while循环并检查listBox1.Items.Count() >0
并且在循环内你可以listBox1.Items.Count() >0
第一个项目并将其移动到第二个项目或删除。
while (ListBox1.Items.Count>0)
{
var item = ListBox1.Items[0].ToString();
using (OracleCommand crtCommand = new OracleCommand("select count(*) from(( select * from all_ind_columns where index_name= '" + item + "' and table_owner='" + txtSrcUserID.Text.ToUpper() + "'))", conn1))
using (OracleCommand ctCommand = new OracleCommand("select count(*) from(( select * from all_ind_columns where index_name= '" + item + "' and table_owner='" + txtDesUserID.Text.ToUpper() + "'))", conn1))
{
string result1 = crtCommand.ExecuteScalar().ToString();
string result2 = ctCommand.ExecuteScalar().ToString();
if (result1 != result2)
{
ListBox2.Items.Add(item);
}
ListBox1.Items.RemoveAt(0);
}
}
注意: 您的代码对于sql注入攻击是开放的,使用参数而不是内联参数。
while (ListBox1.Items.Count>0)
{
var item = ListBox1.Items[0].ToString();
using (OracleConnection con = new OracleConnection(connectionString))
using (OracleCommand cmd = con.CreateCommand())
{
con.Open();
cmd.CommandText = "select count(*) from(( select * from all_ind_columns where index_name= :item and table_owner=:table_owner))";
cmd.Parameters.Add(item);
cmd.Parameters.Add(txtSrcUserID.Text.ToUpper());
string result1 = cmd.ExecuteScalar().ToString();
cmd.Parameters.Clear();
cmd.Parameters.Add(item);
cmd.Parameters.Add(txtDesUserID.Text.ToUpper());
string result2 = cmd.ExecuteScalar().ToString();
if (result1 != result2)
{
ListBox2.Items.Add(item);
}
ListBox1.Items.RemoveAt(0);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.