C#从列表中选择项目,然后从SQL Server CE数据库中获取项目

时间:2013-09-15 17:21:36

标签: c# .net sql sql-server-ce

我正在处理需要从列表视图中进行选择的内容,然后根据第1列(或ii)从SQL Server数据库中选择项目,然后将其重写为本地数据表以进行处理文本文件。这就是我到目前为止所拥有的:

var con = new SqlCeConnection(ConfigurationManager.ConnectionStrings[Connection.ConnectionStrings.CurrentConnection].ConnectionString);

foreach (ListViewItem item in LSTAsset.SelectedItems)
{
    for (int ii = 0; ii < LSTAsset.SelectedItems.Count; ii++)
    {

        string select = LSTAsset.SelectedItems[ii].Text;

        if (con != null && con.State == ConnectionState.Closed)
        {
            con.Open();
        }
        var cmd = new SqlCeCommand("Select assetname, serial from asset where        assetname like '%" + select + "%'", con);
        SqlCeDataAdapter dataadapt = new SqlCeDataAdapter(cmd);
        //DataTable datatable = new DataTable();

        if (ii == 0)
        {
            dataadapt.Fill(steve.iTable);
        }

        if (ii < 0)
        {
            dataadapt.Update(steve.iTable);
        }
    }
}

现在我的问题是,当选择多个项目时,它似乎会使所选项目加倍。假设您选择了两个项目,它现在通过代码运行4次,并在数据表中为您提供4行。为什么它会使代码翻倍?它稍后会破坏输出文件,因为它会在表中写入2x所需的行。

1 个答案:

答案 0 :(得分:0)

看起来你不必要两次循环(SelectedItems.Count)。

尝试删除内部或外部循环,例如:

foreach (ListViewItem item in LSTAsset.SelectedItems)

原因是因为下一个语句通过for循环而不是foreach执行相同的操作,您将连接到数据库n次* 2,其中{ {1}}是所选项目计数。