简体   繁体   English

将列表框项目移动到另一个列表框?

[英]move listbox item to another listbox?

I want to use each listbox1 item to run the both query and if both result are not same than move that item to another listbox called listbox2 if they are same than delete that item from listbox1. 我想使用每个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
        }
    }
}

You cant use foreach here because you change the listBox1.Items inside the loop, Use while loop and check the listBox1.Items.Count() >0 and inside the loop you can pic first item and move it to second one or remove. 你不能在这里使用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);
    }   

}

Note: your code is open for sql injection attacks, use parameters instead of inline parameters. 注意: 您的代码对于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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM